【发布时间】:2018-07-29 06:35:44
【问题描述】:
给出以下代码:
main(int argc, char ** argv)
{
int child = fork();
int c = 5;
if (child == 0)
{
c += 5;
}
else
{
child = fork();
c += 10;
if (child)
c += 5;
}
}
变量 c 有多少个不同的副本?他们的价值观是什么?
所以,答案原来是三 (3) 个过程:
c父进程的值为20,cchild1进程的值为10,cchild2进程的值为15,
有人可以帮我详细解释一下吗?一行一行会很棒!
我看到还有一个关于 fork() 的问题,但我想具体了解这行代码以及答案是如何得出的。
【问题讨论】:
-
我明白,但是对于这个特定的代码,我想了解这些答案是如何得出的。
-
简短回答,每次成功调用
fork()都会创建一个新进程。除了fork()返回的值之外,新进程在每个细节上都与旧进程相同(它在新进程中返回0,但在原始进程中,它返回新进程的pid。pid总是> 0 .) 对于长答案:请参阅“重复”。那里的答案详细说明了。
标签: multithreading process operating-system