我将尝试运行以下代码:
我希望每隔3秒就能打印出“3 seconds up”,但是并没有显示这个消息。我尝试使用gdb进行调试,但是似乎没有任何问题,也没有输出。在尝试调试时,我添加了一个printf语句,神奇的是输出可以被看到。
如果我删除//printf("%d\n",ms-oldms );语句后再运行程序,再次没有输出。我不确定发生了什么以及它是否依赖于任何东西。 $gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
我正在尝试运行以下代码:
#include <sys/time.h>
#include <stdio.h>
int main()
{
unsigned int ms, oldms = 0,dif;
struct timeval tv;
while(1)
{
gettimeofday(&tv, NULL);
ms=tv.tv_sec;
//printf("%d\n",ms-oldms );
dif=ms-oldms;
if(dif>3)
{
printf("3 seconds up");
oldms=ms;
}
}
}
我希望每隔3秒就能打印出“3 seconds up”,但是并没有显示这个消息。我尝试使用gdb进行调试,但是似乎没有任何问题,也没有输出。在尝试调试时,我添加了一个printf语句,神奇的是输出可以被看到。
如果我删除//printf("%d\n",ms-oldms );语句后再运行程序,再次没有输出。我不确定发生了什么以及它是否依赖于任何东西。 $gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
printf
之后添加break
也可以正常工作。 - i486stdout
(printf()
写入的地方)通常是缓冲的,直到您打印换行符(或调用fflush(stdout)
)之前,通常不会看到任何内容。 - TripeHound