当我编译并运行这个代码(它是一个更大的程序的一部分)时,Linux将在while循环中途中断,然后停止工作.
下面的代码打印时间:0,然后挂起,在我暂停此过程之前不执行任何操作.为什么会打印时间:0但不是以下行的理智检查?
while (i < 5) { printf("time: %d\n",elapsedTime); printf("sanity check"); foo(); i++; }
解决方法
输出通常是缓冲的,只能在刷新或换行之后写入.在
printf("sanity check");
没有换行符,所以如果你在这个循环后运行,你不会看到它.
替换它
printf("sanity check\n");
要么
printf("sanity check"); fflush(stdout);
你会看到它.