2014-11-02 2 views
0

30 초마다 메시지를 보내는 일부 Linux 코드를 작성하려고합니다. 내가 지금까지 가지고있는 것은 :C++ 타이머 (일정 기간 대기)

#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을 사용하지 않는 이유는 무엇입니까? – Caduchon

+0

코드는 훌륭합니다. 그것은 저에게 효과적입니다! 터미널에서 출력물을보기 위해 30 초를 기다리고 있기를 바랍니다. – Titus

답변

0

데이빗이 맞았습니다. 그것은 효과가있을 때까지 작동하지 않았고 std :: flush를 사용하기 전까지는 표시하지 않았습니다.