如果printf中有\n则不需要fflush

如果有这样一段代码:

{
    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版权协议,转载请附上原文出处链接和本声明。