当我编译并运行此代码(它是一个更大的程序的一部分)时,Linux会在while
循环中途中途,然后停止工作。
下面的代码打印time: 0
然后挂起,在我暂停进程之前不做任何其他操作。为什么它会打印time: 0
而不是下面的健全性检查线?
while (i < 5)
{
printf("time: %d\n",elapsedTime);
printf("sanity check");
foo();
i++;
}
答案 0 :(得分:22)
输出通常是缓冲的,只能在刷新或换行后写入。在
printf("sanity check");
没有换行符,所以如果你在此之后无限循环运行,你将看不到它。 替换为
printf("sanity check\n");
或
printf("sanity check");
fflush(stdout);
你会看到它。