- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.Linux进程与进程环境课件
进程 是一个独立的可调度的活动 是一个抽象实体,当它执行某个任务时,将要分配和释放资源 是可以并行执行的计算部分 是一个程序的一次执行过程 进程运行状态 PCB 进程控制块(PCB,Process Control Block),台湾译作行程控制表,亦有译作任务控制表,是操作系统内核中一种数据结构,主要表示进程状态。 进程标识 LINUX中最主要的进程标示有进程号(PID)和它的父进程号(PPID)。PID来唯一标识一个进程,PID和PPID都是非零的正整数。 当系统为一个新进程分配ID达到系统最大值时,系统会重新使用最小且当前没有被使用的PID号。 pid ppid 获取进程ID号函数 在程序中可以使用getpid和getppid函数获得进程ID pid_t getpid(void) pid_t getppid(void) 这两个函数成功返回进程PID和PPID,失败返-1。 实例 int main(int argc,char *argv[]) { printf(The PID of this process is %d\n,getpid()); //引用函数 printf(The PPID of this process is %d\n,getppid()); //引用函数 return 0; } LINUX进程控制 进程 在开发应用程序时,程序员需要有效地管理进程,常见的进程管理方式包括:创建进程、获取进程信息、设置进程属性、执行进程、退出进程和跟踪进程等主要操作。 进程启动 手工启动 前台启动、后台启动 调度启动 system() ,fork() ,exec() ps、top、kill cron 进程编程控制 fork() exec system() fork实例(1) Int main(void) { fork(); printf(“Will be executed twice\n”); return 0; } [root@localhost ~]# ./fork Will be executed twice Will be executed twice 创建进程 操作系统需要一种机制用于创建新的进程,fork函数就是linux提供给程序开发人员用于创建进程的方法。 pid_t fork (void) 执行一次返回两次 如果执行成功,在父进程中将返回子进程(新创建的进程)的 PID,类型为 pid_t,在子进程将返回 0,以区别父子进程。 语法 #includesys/types.h #includeunistd.h pid_t fork(void) 返回值:0代表子进程 子进程ID(大于0的 整数):父进程 -1 出错 fork实例(2) int main(void) { pid_t pid; if((pid=fork())==-1) //创建子进程 printf(fork error); else if(pid==0) //子进程中运行的代码 { printf(The return pid is %d\n In child Pid is%d\n,pid,getpid()); } else//父进程运行的代码 { printf(The return pid is %d\n In father Pid is%d\n,pid,getpid()); } return 0; } fork fork 函数创建子进程后,子进程将复制父进程的数据段、BSS 段、代码段、堆空间和栈空间,对于文件描述符则是以共享的方式使用的。在下面的实例中可以看出,父子进程对于各自的变量维持不同的变量(复制), 而对文件描述符信息则是共享使用的,而且,对于文件的偏移量也是共享的。 exec函数族 提供一个在进程中启动另一个程序执行的方法,用新程序取代原调用进程的内存空间。 当进程认为自己不能再为系统和用户做出任何贡献时,调用exec函数族让自己重生 如果一个进程想执行另一个程序,调用fork()创建新进程,然后调用exec,这样就实现了通过执行应用程序而产生一个新进程 system() #include stdlib.h int system(const char*string) 调用fork()产生子进程,由子进程调用string代表的命令。 返回值:-1出现错误 0调用成功 大于0 成功退
您可能关注的文档
最近下载
- 面向2025年商业银行的金融科技人才金融科技产品运营能力培养策略.docx
- 【50页PPT】数据治理平台与数据运营体系建设方案.pptx VIP
- E5071B网络分析仪指导书.pdf VIP
- 汽车售后经理年终总结.pptx VIP
- 操作考核标准:简易呼吸气囊.pdf VIP
- 高标准基本农田建设项目竣工验收报告.docx VIP
- 人力资源控制程序.doc VIP
- 2020年美工理论题库4.docx VIP
- 国标图集05s502图集阀门井-国家建筑标准设计图集电子版下载 1.docx VIP
- 第2讲 一心跟着共产党(第一课时)没有共产党就没有新中国(课件)-《学生读本(小学低年级)》.pptx VIP
文档评论(0)