메세지큐 alarm
글쓴이: 제로 / 작성시간: 수, 2005/02/23 - 6:10오후
아래처럼 타임아웃 처리를 했는데 처리가 잘되다가 멈추는 경우가 발생합니다.
해당메세지큐에 데이타을 전송하면 처리가 됩니다.
시그널핸들처리가 끝나면 alarm(0)으로 처리되는거 아닌가요
멈추는 이유가 뭔지 모르겠네요?
void do_sig_alrm(int signo)
{
signal(signo,SIG_IGN);
/* 할 일 한다 */
iflag = 1;
}
int main()
{
signal(SIGALRM, do_sig_alrm ) ;
for(;;) {
while(1) {
iflag = 0;
alarm(10);
rtn = msgrcv(qid,,,,0);
alarm(0);
if(rtn < 0) {
if( iflag == 1 ) break;
if (errno == EINTR ) continue ; /* SIGALRM 을 처리하고 여기로 왔음 */
}
}
}
Forums:
댓글 달기