任何人都可以告诉我这个c代码将生成哪个进程树?
#include <unistd.h>
int main(void)
{
fork() || (fork() && fork());
return 0;
}
答案 0 :(得分:1)
可能这是一个功课。然而,这很有意思。
首先:
fork()
为孩子返回0。
fork()
为父级返回不等于0的值。
因此,在服务器中,逻辑或(||
)不等式0的第一部分和表达式的其余部分不在父项上执行:一次调用fork。
在孩子中,第一部分为0,因此执行其余的fork() && fork()
。所以在这个孩子上,第一个fork()
返回一个不等于零的值,导致评估第二部分。因此有两个新的孩子。它们都返回0,使评估短路。
未经测试,在Safari中输入。