电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

fork函数的2个返回值说明

fork函数的2个返回值说明_第1页
1/8
fork函数的2个返回值说明_第2页
2/8
fork函数的2个返回值说明_第3页
3/8
fork 简介: fork 英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的 Unix(或类 Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork () 的作用是什么?换句话说,你用 fork () 的目的是什么? ― ― 是为了产生一个新的进程,地球人都知道 :) 产生一个什么样的进程? ― ― 和你本来调用 fork () 的那个进程基本一样的进程,其实就是你原来进程的副本; 真的完全一样吗? ― ― 当然不能完全一样,你要两个除了 pid 之外其它一模一样的进程干什么,就算 memory 再多也不用这么摆谱吧? 哪里不一样? ― ― 当然最重要的是 fork () 之后执行的代码不一样,you know, i know :) 怎么实现呢? ― ― 如果是 Windows,它会让你在 fork () 里面提供一大堆东西,指明这个那个什么的… … 我用的是 unix 啊 ― ― 所以很简单,unix 会让两个进程(不错,原来是一个,unix 替你复制了一个,现在有两个) 在 fork () 之后产生不同:返回值不同。其中一个进程(使用新的 pid)里面的 fork () 返回零, 这个进程就是“子进程”;而另一个进程(使用原来的 pid)中的 fork () 返回前面那个子进程的 pid,他自己被称为“父进程” 然后呢? ― ― 写代码的人又不笨,当然就根据返回值是否非零来判断了,现在我是在子进程里面呢,还是在 父进程里面?在子进程里面就执行子进程该执行的代码,在父进程里面就执行父进程的代码… … 有铁杆 windows fans 借此说明,windows 好啊,子进程用子进程的代码,父进程用父进程的, 你 unix 笨了吧,子进程包含父进程、子进程的代码,父进程包含父进程子进程的代码,岂不是多占用内存了吗? ― ― 据我所知,unix 代码段都是可重入代码,也就是说,进程复制,并不复制代码段,若 干个进程 共享同一代码段,增加的只是全局共享数据和对文件描述符的引用等,另外就是堆栈。你一个代码 长达 10M 的进程,fork () 出三四个子进程,只是增加一点内存占用(如果你没有使用很多全局变量 的话),而不是占用 40M 以上的内存。 【NOTE2】 程序 从 fork 开始分支 (称分支不准确), 一路是主进程 pid > 0 (pid 是子进程ID) 一路是子进程 pid == 0 自此分成两个任务 其实 fork 的时候已经两个分支了,数据段被复制了一份,因此 pid 有两份 执行 pid=fork()时,返回值赋给...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

fork函数的2个返回值说明

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部