Friday, May 16, 2008

Signals, signal set

편리하게, 여러 signal을 묶어서 처리할 수 있다. 묶어진 signal set을 통해 특정 signal들을 block하거나, block을 통해 pending된 signal을 처리하고 혹은 특정 signal들을 기다리는 것도 가능하다. 조작에 쓰이는 기본적인 함수들은 아래와 같다.


#include <signal.h>
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signo);
int sigdelset(sigset_t *set, int signo);
int sigismember(const sigset_t *set, int signo);
int sigisemptyset(sigset_t *set);
int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right);
int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right);

sigset_t 는 signal들을 bit에 하나씩 맵핑시킨 것인데, sigemptyset은 이를 0으로 AND 시키고, sigfullset 은 0xF...F 로 OR 시킨다고 생각하면된다. sigandset 은 left, right를 and해서 dest에 넘겨주고, sigorset은 OR한다. 나머지 함수들은 직관적이므로 생략.

No comments:

Post a Comment