Таймер C ++ (Ожидание определенного периода времени)

0

Я пытаюсь написать код 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
}

Однако, когда я запускаю его, он ничего не делает. То, как я это понимаю, время() дает мне время, а difftime() дает мне разницу между 2 раза. Я не могу использовать что-то вроде sleep(), потому что программа может получать сообщение в любое время.

Способ, которым я пытаюсь заставить это работать: получить начальное время, затем каждый цикл получает время после этого и отправляет сообщение, если разница между 2 раз составляет 30 секунд.

Какие-нибудь идеи, что может быть неправильно здесь? Я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении.

  • 1
    Две вещи: 1) Зарегистрируйте значение, возвращаемое difftime чтобы вы могли убедиться, что это то, что вы думаете. 2) Добавьте << std::flush в конец строки вывода.
  • 0
    Есть ли причины не использовать crontab?
Показать ещё 4 комментария
Теги:
timer
time
client-server

1 ответ

0

У Дэвида это было правильно. Он работал, просто не показывался, пока я не использовал std :: flush

Ещё вопросы

Сообщество Overcoder
Наверх
Меню