[Q] 블록킹 상태에서 시그널에 의해 깨어나지 않도록
글쓴이: erenes / 작성시간: 월, 2003/11/03 - 11:46오전
안녕하세요.
지금 생긴 문제는...
프로그램에서 타이머(주기적)를 하나 만들고 소켓서버를 하나 만들었습니다.
타이머는 SIGALRM 시그널이 100ms 마다 뜨고 그 때마다 등록한 시그널핸들러가 실행됩니다.
그리고 소켓 서버는 클라이언트 접속을 기다리는 accept상태에서 블록중입니다.
그런데 문제는 accept가 블록중에 SIGALRM 시그널에 의해 깨어나는 것입니다.
클라이언트의 접속이 없는데도 말이죠. accept가 시그널에 의해 깨어나지 않고
클라이언트의 요구에 의해서만 깨어게 할 수 없습니까?
답변 부탁드립니다.
Forums:
정확히 원하시는건 아닌 것 같지만[code:1]man sigactio
정확히 원하시는건 아닌 것 같지만
man sigaction
에서 sa_flags의 SA_RESTART를 살펴 보십시오.
아무것도 하지않는 dummy signal handler나 SIG_IGN으로 sa_handler를 지정하고 SA_RESTART를 set 해주시면 원하시는 효과가 날 듯 합니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
댓글 달기