stdout和stderr

    技术2022-05-19  29

    stdout是经过缓冲处理的。写入stdout的数据不会立刻被写入终端(或其它设备,如果程序输出被重定向)除非缓冲区满、程序正常退出或stdout被关闭。你可以这样显式地刷新输出流:fflush (stdout);与stdout不同的是,stderr没有经过缓冲处理;输出到stderr的数据会直接被发送到终端。

    所以这个程序并不会每一秒中输出一个句点,而是一次性输出10个句点。

    #include <stdio.h> #include <stdlib.h> int main() { int i=10; while(i--) { printf("."); sleep(1); } }

     

    这个程序则会每秒输出一个句点。

    #include <stdio.h> #include <stdlib.h> int main() { int i=10; while(i--) { fprintf(stderr,"."); sleep(1); } }


    最新回复(0)