代码:
printf("hello\n");
//fflush(stdout);
fork();
输出:
hello
代码:
printf("hello\n");
fflush(stdout);
fork();
输出:
hello
hello
说明:系统函数fork()创建新的进程。
printh后打印内容在缓冲区里,fork后,父子进程的缓冲区里也是相同的,进程退出时,缓冲区输出到屏幕,所以有两份。
而fflush(stdout)当然是清空stdout的缓冲区了
本文探讨了在C语言中使用fork函数前后的输出行为,并对比了调用fflush函数前后对输出结果的影响。通过两个示例代码演示了当父进程调用fork后,未清空缓冲区会导致子进程继承相同缓冲区内容的情况,以及如何通过fflush解决该问题。
代码:
printf("hello\n");
//fflush(stdout);
fork();
输出:
hello
代码:
printf("hello\n");
fflush(stdout);
fork();
输出:
hello
hello
说明:系统函数fork()创建新的进程。
printh后打印内容在缓冲区里,fork后,父子进程的缓冲区里也是相同的,进程退出时,缓冲区输出到屏幕,所以有两份。
而fflush(stdout)当然是清空stdout的缓冲区了
1358
1275
2959
382

被折叠的 条评论
为什么被折叠?