c语言printf函数的疑惑
为什么这个函数在linux下输出有很大的“延迟”,线程和子进程的输入不是在运行时输出,而是线程和子进程退出的时候一起输出,求高手指教,我现在还得用这个东西追踪程序~~~ “线程和子进程的输入不是在运行时输出“这是啥意思?小处不严谨,大处也可想而知。 为什么这个函数在linux下输出有很大的“延迟”,线程和子进程的输入不是在运行时输出,而是线程和子进程退出 ...
156815131 发表于 2011-12-03 16:35 http://bbs.chinaunix.net/images/common/back.gif
标准IO有行缓冲,块缓冲与无缓冲之分 回复 3# cjaizss
正解! fflush(stdout); stdout一般是行缓冲,输出时加 \n 我写的都是printf("some word\n");运行到这一句的时候并没有打印出这一句出来,而是在这个语句所在的线程或者是进程运行结束后才打印出来~ 行缓冲和全缓冲是不一样的。 如果你都能感觉到延迟,那有可能是IO是不是太忙了。 不至於這麼慢的,把程序放在別的linux平臺試試。
或者使用:
fprintf(stderr,"some error");
fprintf(1,"some outpu");
試試。