C 程序中的分叉导致父打印输出重复

问题描述 投票:0回答:1

我在理解该程序的输出时遇到一些困难。运行该程序后,输出最终为“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;
}
c fork
1个回答
0
投票

您正在复制缓冲区。在分叉之前冲洗它。

fflush( STDOUT );
© www.soinside.com 2019 - 2024. All rights reserved.