fork()with else

时间:2016-02-15 06:23:19

标签: c if-statement process fork

我在下面有关fork()进程的查询: 说我有一个代码:

if(fork()||fork())
printf("1");
else if(!fork())
printf("2");
else
printf("3");

中的这些,将打印1,2或3。 我知道fork()为父进程返回非零,为子进程返回0。因此,当它遇到第一个语句时,第一个fork()调用将返回父进程的1和0进程的子进程。因为theres ||运算符,第二个fork()将仅在第一个操作数返回0时运行。因此第二个fork将在child上调用而不在父级上调用。我的理解是否正确?如果是,那么孩子将打印1。那么它会转到其他if if else阻止吗? 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

第一个过程将打印1。

原始进程的子进程将在||的后半部分返回true时打印1。

||之后的叉子将失败的其他 - 如果由于!而打印3,而其子将打印2,因为!0为真。