main()
{
if (fork() || (fork() && fork()))
printf("AA\n");
else if (!fork())
printf("BB\n");
else
printf("CC\n");
}
Run Code Online (Sandbox Code Playgroud)
我运行了以下代码并获得AA AA CC BB CC BB的结果.虽然我理解fork如何工作,但我不明白它对逻辑运算符的作用.我们班上的老师希望我们为这个家庭作业提供答案.虽然我可以轻松运行此程序,但我想知道究竟发生了什么.任何人都可以向网站解释或指导我使用带逻辑运算符的fork时会发生什么.
我对c/c ++很新,所以对我很轻松.谢谢
fork()返回0(false)到子进程,并且对父进程非零(true).
您可以将逻辑运算符应用于这些布尔值.
请记住,逻辑运算符会短路,因此0 || fork()根本不会调用fork.
如果仔细阅读代码并考虑每个fork()调用将返回的内容,您应该能够弄明白.