signal 번호를 어떻게 알수 있을까요?
글쓴이: ceo236 / 작성시간: 목, 2003/10/23 - 2:14오후
HP_UNIX 에서 main을 실행하면 thread1 과 thread2를 create하고,
main에서는 소켓을 select()걸고 있습니다.
각 thread는 외부프로세스로부터 들어오는 queue1, queue2를 block 모드로로 msgrcv()하고 있구요.
그런데, main에서 alarm(2)걸면, 2초후에 thread의 (1또는2 번갈아 가면서 발생.) msgrcv()에서 errno EINTR가 발생합니다.
이때, 정말 EINTR이 ALRM때문에 발생하였는지 검사하기 위해,
rc = msgrcv(id, buf, sizeof(buf), type, 0) if (errno = EINTR) { // 여기에 errno EINTR를 발생시킨 signo를 display. }
signo를 찍고 싶습니다. 그런데 무엇을 사용해야 하는지 모르겠네요...
그리고 질문하나 더 있습니다.
pthread_create() 하면 thread id가 나오잖아요. 아마도 2부터 시작한던데, create 한만큼 +1씩 증가하구요, pthread_join()으로 자원을 제거하고 다시 create하면 2부터 시작안하는것 같던데...이게 왜그렇죠?
Forums:
댓글 달기