博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fork函数
阅读量:6812 次
发布时间:2019-06-26

本文共 740 字,大约阅读时间需要 2 分钟。

fork函数的特点概括起来就是“调用一次,返回两次”,在 中调用一次,在父进程和子进程中各返回一次。 两次返回的唯一区别是子进程中返回0值而 中返回子进程ID。
子进程是 的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述 的“副本”,这意味着父子进程间不共享这些存储空间。
linux将复制 的 内容给子进程,因此,子进程有了独立的地址空间。
fork的另一个特性是所有由 打开的描述符都被复制到子进程中。父、子进程中相同编号的 在 中指向同一个file ,也就是说,file结构体的 要增加。
 
1、子进程结束后为什么要进入僵尸状态? 因为父进程可能要取得子进程的退出状态等信息。
 
2、僵尸状态是每个子进程必经的状态吗? 是的。 任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。这是每个 子进程在结束时都要经过的阶段。如果子进程在exit()之后,父进程没有来得及处理,这时用ps命令就能看到子进程的状态是“Z”。如果父进程能及时 处理,可能用ps命令就来不及看到子进程的僵尸状态,但这并不等于子进程不经过僵尸状态。 * 如果父进程在子进程结束之前退出,则子进程将由init接管。init将会以父进程的身份对僵尸状态的子进程进行处理。
 
3、如何查看僵尸进程: $ ps -el 其中,有标记为Z的进程就是僵尸进程 S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态

转载于:https://www.cnblogs.com/samulescollection/archive/2013/05/17/3083660.html

你可能感兴趣的文章
hdu 1272 小希的迷宫
查看>>
原创教程:SpagoBI4.2汉化及配置Mysql数据库教程
查看>>
大写中文数字-財务
查看>>
用Easing函数实现碰撞效果
查看>>
vc++基础班[23]---文件夹的基本操作
查看>>
关于gnome
查看>>
LSPCI具体解释分析
查看>>
【AngularJS】—— 3 我的第一个AngularJS小程序
查看>>
FireFox 浏览器插件/扩展开发学习
查看>>
Groovy 与 Python 的差异【翻译】
查看>>
Theano学习笔记(一)——代数
查看>>
GO语言的开源库
查看>>
java中获取系统属性以及环境变量
查看>>
微信开发(03)之新建按钮时报错 errcode 40054
查看>>
TEA encryption with 128bit key
查看>>
操作系统定期定时执行python脚本
查看>>
TCP的拥塞控制
查看>>
FZU 1894 志愿者选拔 单调队列
查看>>
**app后端设计(10)--数据增量更新(省流量)
查看>>
用SoapUI进行Webservice的性能压力测试
查看>>