我有一个利用difftime的小C程序真奇怪,10秒后就没打印出来。
不过,如果我取消对睡眠线的注释,它就会工作。
你知道为什么会这样吗?
/* difftime example */
#include <stdio.h> /* printf */
#include <time.h> /* time_t, struct tm, difftime, time, mktime */
int main ()
{
time_t start, stop;
start = time(NULL);
for(; /* some condition that takes forever to meet */;) {
// do stuff that apparently takes forever.
stop = time(NULL);
double diff = difftime(stop, start);
//sleep (1);
if (diff >= 10) {
printf("10 seconds passed...");
start = time(NULL);
}
}
}
顺便说一句:代码编译得很好,我正在用覆盆子Pi运行它。
3.6.11+#474抢占6月13日星期四17:14:42英国夏令时2013 armv6l GNU/Linux
最佳答案
控制台IO可能已缓存试着冲水
printf("10 seconds passed...");
fflush(stdout)
或添加新行
\n
printf("10 seconds passed...\n");
当对
sleep
的调用未注释时,我无法再现行为中的任何更改。