c – fork()输出
发布时间:2020-12-16 09:52:42 所属栏目:百科 来源:网络整理
导读:我有以下代码: int main(){ if (fork() + fork()) printf("Boom!n"); return 0;} 我不明白为什么这段代码打印消息3次. 有人可以解释一下吗? 解决方法 对于父进程,Fork返回非零,对子进程返回零. 所以父进程分叉,创建一个子进程(fork1).这个子进程将再次for
我有以下代码:
int main(){ if (fork() + fork()) printf("Boom!n"); return 0; } 我不明白为什么这段代码打印消息3次. 有人可以解释一下吗? 解决方法
对于父进程,Fork返回非零,对子进程返回零.
所以父进程分叉,创建一个子进程(fork1).这个子进程将再次fork(它将执行第二个fork)(fork2).创建第二个子进程.然后父进程将分叉第二个fork调用,创建第三个进程(fork3).所以我们将得到这样的树结构: Parent fork1 fork3 fork2 现在请注意,对于子进程,在fork之前执行的所有调用的值都是从父进程继承的.如果我们使用这个,我们得到: > Parent将具有非零返回值,因为fork()调用都返回非零值 当fork()fork()非零时,将执行if.因此3次繁荣! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |