【发布时间】:2014-12-29 02:14:11
【问题描述】:
我正在尝试编写一些将每 30 秒发送一条消息的 Linux 代码。到目前为止我所拥有的是:
#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() 之类的东西,因为程序可能随时收到消息。
我试图让它工作的方式是:获取初始时间,然后每个循环获取之后的时间,如果 2 次之间的差异为 30 秒,则发送一条消息。
有什么想法可以在这里出错吗?如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
-
两件事:1)记录
difftime返回的值,这样你就可以确保它是你认为的那样。 2) 在输出行末尾添加<< std::flush。 -
有什么理由不使用 crontab 吗?
-
代码很好,对我有用!希望您等待 30 秒才能在终端中看到输出
-
繁忙的等待计时器可能不是实现此类的最佳主意。任何一方,客户端和服务器。
-
@caduchon 我从来没有听说过。我去看看,谢谢!
标签: c++ linux time timer client-server