我有一个利用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的调用未注释时,我无法再现行为中的任何更改。

10-06 05:24
查看更多