如果有这样一段代码:
{
printf("B");
int fpid = fork();
}那么B应该是会被输出两遍的,原因在于printf在遇到fork时被阻塞,然后在新的进程中继续执行,此时缓冲区中还是有B的,相当于在新老进程中各输出了一遍。
解决方法:在中间加入fflush(stdout)
{
printf("B");
fflush(stdout);
int fpid = fork();
}fflush(stdout)会清空当前缓冲区内容,使得新的进程不会输出B。
如果输出的是"B\n",则 fflush(stdout)加不加就无所谓了,因为换行符会自动清空缓冲区内容。
版权声明:本文为m0_47152970原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。