[질문] sigaction 과 pause 사용에 문제가 생겼습니다.
글쓴이: s97083 / 작성시간: 수, 2012/01/25 - 10:59오전
안녕하세요
코드 참고해서 수정을 좀하고 있는데 아래와 같이 핸들러를 등록하고..
act.sa_handler = sighandler;
act.sa_flags = SA_RESTART;//0;
sigemptyset(&act.sa_mask);
sigaddset( &sigset, SIGUSR2);
sigaction(SIGUSR2, &act, NULL);
중간에 pause를 호출 했습니다.
while(run_flg) { <-- 전역 변수...
pause();
}
그리고 호출되는 sig 함수에 while 문의 탈출 조건을 걸었습니다.
void sighandler(int signo)
{
run_flg = 0;
}
signal 호출은 raise(SIGUSR2); 함수로 처리했습니다.
문제는 pause까지 간 이후에 시그널을 받아도 pause 이후 부분부터 다시 시작하지를 않고요.
그냥 시그널만 받는 부분만 살아있습니다.
pause 부분부터 다시 시작하게 할 방법이 없을까요?
읽어주셔서 감사합니다.
Forums:
sigwait을 사용하시는게 좋아보입니다. 단 이
sigwait을 사용하시는게 좋아보입니다.
단 이 경우 sighandler 는 사용할 수 없게 됩니다.
Neogeo - Future is Now.
sigwait 를 pause() 있는 자리에 넣으면 되는건가요?
답변 주셔서 감사합니다. 테스트를 해보고 싶은데
sigwait()를 pause 대신에 그대로 호출해 주면 될까요?
man sigwait
man sigwait
Neogeo - Future is Now.
댓글 달기