3 つの子プロセスと 1 つの親プロセスがありますか? 2 つの異なる waitpid は何をしますか? なぜ 2 つあるのですか?
int main()
{
pid_t pid;
int status, counter = 4;
while(counter > 0)
{
pid = fork();
if(pid)
{
counter /= 2;
}
else
{
printf("%d", counter); /* (1) */
break;
}
}
if(pid)
{
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
printf(";%d", counter); /* (2) */
}
return counter;
}
waitpid の後の 2 番目の printf は、3、5、6、34、52、61 (セミコロンを除く) を出力します。2桁の印刷がどのように行われるのかわかりません。2 桁目は、おそらく while ループの printf から来ていることを知っています。