Programming/Linux_Kernel
blocked signal 검사와 변경 : sigprocmask
decdream
2008. 10. 20. 14:10
원문 : http://kr.blog.yahoo.com/jinynet9/1011.html
-------------------------------------------------------------------------------------------
signal mask
- 프로세스에게 전달되지 않도록 블럭된 signals 들의 집합
- 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이 아니면 이전의 블럭된 시그널 세트를 리턴받게 된다.
-------------------------------------------------------------------------------------------
signal mask
- 프로세스에게 전달되지 않도록 블럭된 signals 들의 집합
#include <signal.h> |
how
SIG_BLOCK
- 새로운 시그널 마스크는 현재의 시그널 마스크와 set에 의해 지정된 시그널 마스크의 합집합이다.
- 즉, set는 블럭시키고자 하는 추가적인 시그널들을 포함한다.
SIG_UNBLOCK
- 새로운 시그널 마스크는 현재의 시그널 마스크와 set로 지정된 시그널 마스크의 보수의 교집합이다.
- 즉, set는 블럭에서 해제시킬 시그널들을 포함한다.
SIG_SETMASK
- 새로운 시그널 마스크는 set로 지정된 시그널 마스크이다.
- 시그널 마스크를 변경하였다가 이전 시그널 마스크로 복귀시키고자 할 때, 원래의 시그널 마스크를 저장하였다가 SIG_SETMASK 옵션을 사용해야 한다.
set
- NULL로 하면 how는 의미가 없다.
. 현재의 블럭된 시그널을 검사하는데 사용
- SIGKILL과 SIGSTOP 시그널은 블럭시킬 수 없다.
- SIGFPE, SIGILL, SIGSEGV 시그널을 블럭시키면 이 시그널이 발생했을 때 프로세스의 동작은 예측할 수 없다.
oset
- NULL이 아니면 이전의 블럭된 시그널 세트를 리턴받게 된다.