我对 fork() 过程有以下疑问: 说我有一个代码:
if(fork()||fork())
printf("1");
else if(!fork())
printf("2");
else
printf("3");
其中,将打印 1,2 或 3。 我知道 fork() 对于父进程返回非零,对于子进程返回 0。因此,当它到达第一个语句时,第一个 fork() 调用将为父进程返回 1,为子进程返回 0。因为有||运算符,第二个 fork() 仅当第一个操作数返回 0 时才会运行。因此第二个 fork 将在子级上调用,而不是在父级上调用。我的理解正确吗?如果是,则 child 将打印 1。那么它会转到else if和else block 吗? 任何帮助将不胜感激!
最佳答案
第一个进程将打印 1。
原始进程的子进程将在 || 的后半部分返回 true 时打印 1。
|| 之后的 fork 子项由于 !
会导致 else-if 失败并打印 3,而其子级将打印 2,因为 !0 为 true。
关于c - fork() 与 else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402737/