考虑:
int main()
{
if (fork() == 0){
printf("a");
}
else{
printf("b");
waitpid(-1, NULL, 0);
}
printf("c");
exit(0);
}
(来自计算机系统,Bryant - O'Hallaron)。
我们被要求提供所有可能的输出序列。
我回答:acbc、abcc、bacc。但是,与解决方案 (bcac) 相比,我缺少一个输出。我认为这个输出是不可能的,因为父进程在打印 c (waitpid) 之前等待它的子进程返回。这不是真的吗?为什么?而且,在这种情况下,上面的代码和没有 waitpid 行的代码有什么区别?