[英]What could be delaying the printf output of my C program?
我的代码的简化版本是:
#include "externalstuff.h"
void main(){
printf("Hello?");
/* make calls to externalstuff
....
*/
}
我没有写externalstuff.h
,所以我不确定那里到底发生了什么。
对externalstuff
的调用需要一些时间才能执行。 我希望"Hello?"
将被打印,然后我将不得不等待这些外部调用完成,然后我的程序将结束。 但是似乎正在发生的事情是"Hello?"
只有得到正确的印在我的节目结束,经过漫长的等待externalstuff
。
externalstuff.h
中的某些内容可能会延迟此输出吗? 如果是这样,怎么办?
我在Widnows 7的cygwin中使用gcc。
缓冲会延迟程序的输出。 调用printf
,输出将存储在缓冲区中,直到发生以下三种情况之一:
fflush(stdout)
以启动将缓冲区显式发送到控制台,或者 '\\n'
字符,并且输出发送到控制台(与将输出发送到文件相反)。 如果您不喜欢这种行为,并且不介意性能降低,可以致电
setbuf(stdout, NULL);
禁用缓冲。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.