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 ++很陌生,所以对我很轻松。感谢
答案 0 :(得分:5)
fork()
向子进程返回0
(false),向父进程返回非零(true)。
您可以将逻辑运算符应用于这些布尔运算符。
请记住,逻辑运算符会短路,因此0 || fork()
根本不会调用fork
。
如果您仔细阅读代码并考虑每个fork()
调用将返回的内容,您应该能够弄明白。