fork如何与逻辑运算符一起工作

时间:2010-10-06 01:35:37

标签: c fork

main()
{
    if (fork() || (fork() && fork()))
    printf("AA\n");
    else if (!fork())
    printf("BB\n");
    else
    printf("CC\n");
}

我已运行以下代码并获得结果AA AA CC BB CC BB。 虽然我理解fork如何工作,但我不明白它对逻辑运算符的作用。我们班上的老师希望我们为这个家庭作业提供答案。虽然我可以轻松运行此程序,但我想知道究竟发生了什么。 任何人都可以向网站解释或指导我使用带逻辑运算符的fork时会发生什么。

我对c / c ++很陌生,所以对我很轻松。感谢

1 个答案:

答案 0 :(得分:5)

fork()向子进程返回0(false),向父进程返回非零(true)。

您可以将逻辑运算符应用于这些布尔运算符。

请记住,逻辑运算符会短路,因此0 || fork()根本不会调用fork

如果您仔细阅读代码并考虑每个fork()调用将返回的内容,您应该能够弄明白。