2013-04-21 1 views
-1

내가 할 노력하고있어의 주요 아이디어 :는 (C)에 1 초마다 호출되는

내 목표는 다른 신호에도 불구하고, 그 alarm_handler가 1 초마다 호출 될 것이다 (이 경우, SIGUSR2). 이를 위해 pause() 문 앞에 alarm (1)을 썼습니다.

사실, 무슨 일이 일어나고 있는지, SIGUSR2 신호를 여러 번 수신하면 alarm_handler가 호출되지 않는다는 것입니다. (각 1 초마다 호출되기를 바랍니다.)

참고 : SIGUSR2 신호를 무시하고 싶지 않습니다. 나는 그것들을 끝내기를 원하지만 alarm_handler가 매 1 초마다 완료되도록해야합니다.

int main(int argc, const char* argv[]) 
{ 
signal(SIGUSR2, sig_readPipe); 
signal(SIGALRM, alarm_handler); 

do 
{ 
    alarm(1); 
    pause(); 
}while(stopFlag); 

return 0; 
} 

그리고 여기서 상기 신호 처리기이다 : 여기서

메인 인이 제 별도의 함수로 매를 처리 할 필요가 있다는 것이다 어떤

void sig_readPipe(int sig) 
{ 
signal(SIGUSR2, sig_readPipe); 
. 
. 
. 
} 

void alarm_handler(int sig) 
{ 
signal(SIGALRM, alarm_handler); 
. 
. 
. 
} 

답변

2

넣고, 그 함수 현재 카운터에 글로벌 카운터를 설정하십시오. 어떤 시그널 핸들러가 호출 될 때마다 카운터는 현재의 초와 일치하는지 검사해야하고 그렇지 않으면 run_this_every_second()를 호출해야한다.

+0

글로벌 시간에 카운터를 설정하는 방법은 무엇입니까? – Jjang

+0

나 한테는 효과가 없었어 .. 어떻게해야하는지 써주세요. – Jjang