我有一个小型的C程序,它利用了difftime.它真的很奇怪,它不会在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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:代码编译得很好,我在Raspberry Pi上运行它.3.6.11 +#474预防Thu Jun 13 17:14:42 BST 2013 armv6l GNU/Linux
控制台IO可能是行缓冲的.尝试冲洗
printf("10 seconds passed...");
fflush(stdout)
Run Code Online (Sandbox Code Playgroud)
或添加换行符 \n
printf("10 seconds passed...\n");
Run Code Online (Sandbox Code Playgroud)
当sleep取消注释调用时,我无法重现行为的任何更改.