検討:
int main()
{
if (fork() == 0){
printf("a");
}
else{
printf("b");
waitpid(-1, NULL, 0);
}
printf("c");
exit(0);
}
(Computer Systems、Bryant - O'Hallaron から)。
可能なすべての出力シーケンスを求められます。
私は答えました:acbc、abcc、bacc。ただし、ソリューション (bcac) と比較して 1 つの出力がありません。親プロセスは c (waitpid) を出力する前に子プロセスが戻るのを待っているため、この出力は不可能だと思いました。これは真実ではありませんか?なんで?そして、その場合、上記のコードと waitpid 行のない同じコードの違いは何ですか?