【问题标题】:C++ Timer (Wait A Certain Period Of Time)C++ 定时器(等待一段时间)
【发布时间】: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) 在输出行末尾添加&lt;&lt; std::flush
  • 有什么理由不使用 crontab 吗?
  • 代码很好,对我有用!希望您等待 30 秒才能在终端中看到输出
  • 繁忙的等待计时器可能不是实现此类的最佳主意。任何一方,客户端和服务器。
  • @caduchon 我从来没有听说过。我去看看,谢谢!

标签: c++ linux time timer client-server


【解决方案1】:

大卫说得对。它有效,只是在我使用 std::flush 之前没有显示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2020-07-16
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多