c基于linux系统开发系列-15 fork与多进程.pptx

c基于linux系统开发系列-15 fork与多进程.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

学云签约讲师魏娟学习c++开发基于Linux系统开发系列

—第15讲fork与多进程

上节回顾多进程基本概念System及其使用Linux(Unix)系统的多进程特点分析

fork的介绍fork的实现机制fork的应用本节目标

什么是fork用于产生一个新的进程的函数,产生的新进程是父进程的一份拷贝,在多进程的处理中经常使用fork函数调用fork函数在内存中创建一个新的进程空间,这个进程空间是父进程的一份严格拷贝fork的特点fork拷贝父进程的包括环境变量、数据区、代码栈、数据栈、堆区、正文段等等......到新进程空间中新进程是子进程,fork函数一次调用,两次返回fork的介绍

fork实现机制每调用一次fork则产生一个子进程是父进程的拷贝fork在子进程和父进程中返回结果不一样在父进程中返回子进程的id号,在子进程中返回0,如果fork返回负数,则表明创建子进程失败父子进程同时从fork后的下一行代码开始执行fork与system的最大不同也在这里,fork创建子进程后,父子进程都会同时运行fork后面的代码语句;而system则是等待,等待子进程执行完才执行父进程fork的实现机制

使用fork的执行过程分配空间父进程内容拷贝到子进程为子进程分配进程号,在进程表中填写数据在父进程中返回子进程号,在子进程中返回0父子进程同时执行fork以后的代码语句fork在父子进程中返回值不一样fork的实现机制envdatacode①②③fork④⑤tablestackheapenvdatacode①②③fork④⑤tablestackheapfork分配空间拷贝进程内容创建后,父子进程都会同时执行fork后面的语句④⑤

fork实现的问题只要执行fork就会拷贝一份父进程给子进程,父子进程同时都执行相同的代码,这样太浪费资源了如何解决此问题?让父子进程能够执行不同的功能代码来完成更多的功能通过fork返回值来区分出父、子进程,然后判断不同进程,让父子进程执行不同代码fork的实现机制

fork的应用fork产生的多进程运行关系父进程先于子进程结束子进程交由init进程管理,回收资源等子进程先与父进程结束子进程变成僵死进程,系统中避免产生很多的僵死进程2个fork的使用fork();fork();fork();if(pid==0)fork();产生多少个进程?怎么产生?

fork的应用fork()fork()Afork()fork()BA,B同时执行第一个fork后面的forkfork()fork()CB,C同时执行第二个fork后面的代码fork()fork()DA,D同时执行第二个fork后面的代码2个fork()则产生2的2次方个进程;4个进程intpid=fork()if(pid==0)fork()Aintpid=fork()if(pid==0)fork()BA,B同时执行第一个fork后面的代码intpid=fork()if(pid==0)fork()CB,C同时执行第二个fork后面的代码在父进程A中,pid不是0则不会fork,没有新进程产生2个fork()产生3个进程

小结fork的介绍fork的实现机制fork的应用

作业完成课堂上讲解的案例程序

文档评论(0)

159****9610 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6044052142000020

1亿VIP精品文档

相关文档