我正在尝试编写一些Linux代码,该代码每30秒发送一次消息。到目前为止,我有:

#include <time.h>
time_t timeinit;
time_t timenow;

time(&timeinit);
while (1) {
    time(&timenow);
    if (difftime(timenow, timeinit) >= 30){
        std::cout << "Timer Test";
        time(&timeinit); //reset timeinit and recount 30 seconds
    } //end if
}


但是,当我运行它时,它似乎没有任何作用。以我的理解,time()给我时间,而difftime()给我两次时间之间的差。我不能使用sleep()之类的东西,因为该程序可能随时会收到一条消息。

我试图使其工作的方法是:获取初始时间,然后每个循环获取此后的时间,如果两次之间的差值为30秒,则发送一条消息。

有什么想法在这里可能出什么问题吗?如果有人能指出我正确的方向,我将不胜感激。

最佳答案

大卫说对了。它起作用了,直到我使用std :: flush才显示

10-06 02:18