我在理解该程序的输出时遇到一些困难。运行该程序后,输出最终为“0Yo!1Yo!Yo!2Yo!Yo!Yo!3Yo!Yo!Yo!Yo!4Yo!Yo!Yo!Yo!Yo!5Yo!Yo!Yo!Yo!Yo! 5”。正如您所看到的,每经过一次 while 循环,父进程打印的“Yo!”数量都会增加。我希望得到一些关于为什么会发生这种情况的澄清?
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
int main(void)
{
int i = 0;
while (fork() && i < 5)
{
wait(NULL);
printf("Yo!");
i++;
}
printf("%d", i);
return 0;
}
您正在复制缓冲区。在分叉之前冲洗它。
fflush( STDOUT );