2012. 7. 13. 16:26

시그널과 관련된 함수 중 많은 함수는 시그널 각각을 인수로 하지 않고 시그널 집합을 인수로 하는데 이는

시그널 각각을 인수로 하면 동일한 작업을 수십번 반복해야 하는 불편함이 있기 때문이다.

시그널 집합(Signal set)은 말 그대로 시그널을 원소로 하는 집합을 의미한다.

시그널 집합의 데이터형은 sigset_t이다

각 프로세스는 시그널과 관련해서 크게 다음의 세가지 일을 한다.

1. 시스템에서 기본적으로 설정한 동작을 한다.

   시그널을 무시한다. 단, sigkill과 sigstop 시그널은 무시할 수 없다.

   특정 루틴(함수)를 실행한다.

2. 시그널이 도착했을 때 시그널을 블록화 한다. 중요한 부분을 실행하고 있을 때 시그널이 도착하면 이를 블

록화해 뒤로 미룰 수 가 있는데 블록을 해제하면 블록화 되었던 시그널이 전달된다.

3. 프로세스에 시그널을 보낸다. kill,raise와 같은 함수를 이용하여 다른 또는 자기 자신의 프로세스에

시그널을 보낼 수 있다.

void (*signal(int signum, void (*sighandler)(int)))(int);
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

Posted by 몰라욧