본문 바로가기

Programming/Linux_Kernel

blocked signal 검사와 변경 : sigprocmask

원문 : http://kr.blog.yahoo.com/jinynet9/1011.html
-------------------------------------------------------------------------------------------


signal mask
- 프로세스에게 전달되지 않도록 블럭된 signals 들의 집합

 #include <signal.h>

 int sigprocmask(int how, sigset_t * set, sigset_t * oset);

- sigprocmask는 시그널 마스크를 검사하거나 변경하는데 쓰인다.

how

SIG_BLOCK
- 새로운 시그널 마스크는 현재의 시그널 마스크와 set에 의해 지정된 시그널 마스크의 합집합이다.
- 즉, set는 블럭시키고자 하는 추가적인 시그널들을 포함한다.

SIG_UNBLOCK
- 새로운 시그널 마스크는 현재의 시그널 마스크와 set로 지정된 시그널 마스크의 보수의 교집합이다.
- 즉, set는 블럭에서 해제시킬 시그널들을 포함한다.

SIG_SETMASK
- 새로운 시그널 마스크는 set로 지정된 시그널 마스크이다.
- 시그널 마스크를 변경하였다가 이전 시그널 마스크로 복귀시키고자 할 때, 원래의 시그널 마스크를 저장하였다가 SIG_SETMASK 옵션을 사용해야 한다.


set
- NULL로 하면 how는 의미가 없다.
. 현재의 블럭된 시그널을 검사하는데 사용
- SIGKILL과 SIGSTOP 시그널은 블럭시킬 수 없다.
- SIGFPE, SIGILL, SIGSEGV 시그널을 블럭시키면 이 시그널이 발생했을 때 프로세스의 동작은 예측할 수 없다.


oset
- NULL이 아니면 이전의 블럭된 시그널 세트를 리턴받게 된다.

'Programming > Linux_Kernel' 카테고리의 다른 글

HOWTO do Linux kernel development  (0) 2008.10.28
sigaction()  (0) 2008.10.20
Linux Signal Handling  (0) 2008.10.14
gprof 를 이용한 profiling  (0) 2008.10.09
strace man page  (0) 2008.09.30