156815131 发表于 2011-12-03 16:35

c语言printf函数的疑惑

为什么这个函数在linux下输出有很大的“延迟”,线程和子进程的输入不是在运行时输出,而是线程和子进程退出的时候一起输出,求高手指教,我现在还得用这个东西追踪程序~~~

wait_rabbit 发表于 2011-12-03 16:42

“线程和子进程的输入不是在运行时输出“

这是啥意思?小处不严谨,大处也可想而知。

cjaizss 发表于 2011-12-03 16:49

为什么这个函数在linux下输出有很大的“延迟”,线程和子进程的输入不是在运行时输出,而是线程和子进程退出 ...
156815131 发表于 2011-12-03 16:35 http://bbs.chinaunix.net/images/common/back.gif


    标准IO有行缓冲,块缓冲与无缓冲之分

suanmeilizhi 发表于 2011-12-03 21:48

回复 3# cjaizss


    正解!

mfspr 发表于 2011-12-03 22:30

fflush(stdout);

hellioncu 发表于 2011-12-04 20:09

stdout一般是行缓冲,输出时加 \n

156815131 发表于 2011-12-05 14:28

我写的都是printf("some word\n");运行到这一句的时候并没有打印出这一句出来,而是在这个语句所在的线程或者是进程运行结束后才打印出来~

ilwmin 发表于 2011-12-05 15:09

行缓冲和全缓冲是不一样的。

cicy821@126.com 发表于 2011-12-06 16:22

如果你都能感觉到延迟,那有可能是IO是不是太忙了。

Mr_Yao 发表于 2011-12-06 17:55

不至於這麼慢的,把程序放在別的linux平臺試試。

或者使用:
fprintf(stderr,"some error");
fprintf(1,"some outpu");

試試。
页: [1] 2
查看完整版本: c语言printf函数的疑惑