栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

fork()如何为子进程返回

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

fork()如何为子进程返回

%人叉

返回值

Upon successful completion, fork() returns a value of 0 to the childprocess and returns the process ID of the child process to the parentprocess.  Otherwise, a value of -1 is returned to the parent process, nochild process is created, and the global variable [errno][1] is set to

indi-
cate the error.


发生的事情是在fork系统调用中,整个过程重复了。然后,每个调用中的fork调用都会返回。但是,这些现在是不同的上下文,因此它们可以返回不同的返回码。

如果您真的想知道它的工作原理,可以随时检查源代码!如果您不习惯阅读内核代码,则代码会有些混乱,但是内联注释可以很好地提示正在发生的事情。

源代码中最有趣的部分是您的问题的明确答案,它位于fork()定义本身的末尾-

if (error == 0) {    td->td_retval[0] = p2->p_pid;    td->td_retval[1] = 0;}


td”显然拥有一个不同线程的返回值列表。我不确定这种机制的工作原理(为什么没有两个单独的“线程”结构)。如果错误(从fork1返回,“真实”派生函数返回)为0(无错误),则采用“第一个”(父)线程并将其返回值设置为p2(新进程)的PID。如果它是“第二个”线程(在p2中),则将返回值设置为0。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号