- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chap8-进程,chapsecrets,papchap,pppchap,chap认证,papchap区别,chapice,pppchap认证,iscsichap,chap协议
终止进程:exit (1) 进程主动终止:主动终止的进程或许完成自己所有的事务,或者意识到自身已经处于非法状态; (2)进程被动终止:被终止的进程往往都因为产生了某种信号,而进程自身没有对这个信号作出处理,相应地内核采用默认的行为,把进程终止了。 主动终止的方式有: (1)进程直接调用exit函数,exit函数是一个标准库函数,它会在清理进程环境之后,调用系统级接口_exit或_Exit。 (2)从main函数中返回,此时实现会调用exit函数,此种方式完全等同与直接调用exit函数。 (3)进程调用_exit或_Exit函数,此时进程不会去清理进程环境,也不作信号处理;作为系统调用,它们会在内核态中完成一个进程终止工作。 进程退出分为正常退出和异常退出两种: (1)正常退出 a.在main函数中执行return b.调用exit函数 c.调用_exit函数 (2)异常退出 a.调用abort函数。 b.进程受到某个信号,而该信号使程序终止。 总结:不管是那种退出方式,最终都会执行内核中的同一段代码。这段代码用来关闭进程中所有打开的文件描述符,释放它所占用的内存和其他资源。 退出方式比较 a.exit和return的区别:exit是一个函数,有参数;而return是函数执行完后的返回。exit把控制权交给系统,而return将控制权交给调用函数。 b.exit和abort的区别:exit是正常终止进程,而abort是异常终止。 c.exit(int exit_cod):exit中的参数exit_code为0代表进程正常终止,若为其他值表示程序执行过程中有错误发生,比如溢出,除数为0. d.exit()和_exit()的区别:exit头文件stdlib.h中声明,而_exit()声明在头文件unistd.h中。两个函数均能正常终止进程,但是_exit()会执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核。 父子进程终止的先后顺序不同会产生不同的结果 (1)在子进程退出前父进程退出,则系统会让init进程接管子进程。 (2)当子进程先于父进程终止,而父进程又没有调用wait函数等待子进程结束,子进程进入僵死状态,并且会一直保持下去除非系统重启。子进程处于僵死状态是,内核只保存该进程的一些必要信息以备父进程所需。此时子进程始终占用着资源,同时也减少了系统可以创建的最大进程数。 (3)如果子进程先于父进程终止,且父进程调用了wait或waitpid函数,则父进程会等待子进程结束。 子进程在终止时,内核会通过发送信号SIGCHLD来通知进程的父进程,此时父进程可以通过wait或waitpid来取得内核保存少量关于进程终止的信息,包括进程退出状态。 exec函数族的特点 (1) 根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。 (2)与一般情况不同,exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样,颇有些神似金蝉脱壳。看上去还是旧的躯壳,却已经注入了新的灵魂。只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执行。 exec函数族的特点 (3)如果一个进程想执行另一个程序,它就可以 fork出一个新进程,然后调用任何一个exec,这样看起来就好像通过执行应用程序而产生了一个新进程一样。 (4)fork会将调用进程的所有内容原封不动的拷贝到新产生的子进程中去,这些拷贝的动作很消耗时间,而如果fork完之后我们马上就调用exec,这些辛辛苦苦拷贝来的东西又会被立刻抹掉,这看起来非常不划算,于是人们设计了一种写时拷贝(copy-on-write)技术,使得fork结束后并不立刻复制父进程的内容,而是到了真正实用的时候才复制,这样如果下一条语句是exec,它就不会白白作无用功了,也就提高了效率。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 孤儿进程及僵死进程的处理 1) 孤儿进程 当子进程的父进程终止后,该子进程就变成了 孤儿进程(orphan process)。 孤儿进程由1(init)号进程收养。 父进程终止后,子进程变成后台进程。 2) 僵死进程 子进程被创建并工作完成后,等待父进程回收
您可能关注的文档
最近下载
- 92010083-A02-(金鼎 CoolMaster R410A2.0风冷系列室内机用户手册-触摸屏).pdf VIP
- 临床药物治疗学(暨南大学)临床药物治疗学绪论.ppt VIP
- 安全操作规程培训课件.ppt VIP
- 化工设备机械基础1(2学时) 幻灯片.ppt VIP
- 临床药物治疗学第01章_论精美生物医学.ppt VIP
- 急诊危重症患者院内转运共识———标准化分级转运方案.pdf VIP
- 带状疱疹后神经痛研究进展.docx VIP
- 红楼梦之十二金钗完美攻略.pdf
- 智能配电网故障快速识别及处置方法的深度剖析与实践探索.docx VIP
- 《旅游企业财务管理》 教案全套 项目1--10 旅游企业财务管理概述---旅游企业预算管理.doc
文档评论(0)