Я пытаюсь написать код 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 секунд.
Какие-нибудь идеи, что может быть неправильно здесь? Я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении.
У Дэвида это было правильно. Он работал, просто не показывался, пока я не использовал std :: flush
difftime
чтобы вы могли убедиться, что это то, что вы думаете. 2) Добавьте<< std::flush
в конец строки вывода.