为什么这个小C程序没有像预期的那样工作?

Gre*_*reg 1 c

我有一个小型的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

sim*_*onc 8

控制台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取消注释调用时,我无法重现行为的任何更改.

  • 但是怎么会睡觉(1)`改变什么? (3认同)