시그널 관련 조작
#include <signal.h> int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signum); int sigdelset(sigset_t *set, int signum)
sigemptyset함수는 인자로 주어진 시그널 셋인 set 에 포함되어 있는 모든 시그널을 비운다.
sigfillset는 set에 포함된 모든 시그널을 채운다.
sigaddset과 sigdelset는 set로 부터 시그널 번호가 signum인 시그널을 추가하거나 삭제한다.
성공할 경우 0실패할 경우 -1을 리턴한다.
잘못된 시그널 번호를 사용했다.
#include <signal.h> #include <unistd.h> #include <string.h> #include <stdio.h> void sig_int(int signo); void sig_usr(int signo); int main() { int i = 0; struct sigaction intsig, usrsig; usrsig.sa_handler = sig_usr; sigemptyset(&usrsig.sa_mask); usrsig.sa_flags = 0; intsig.sa_handler = sig_int; sigemptyset(&intsig.sa_mask); intsig.sa_flags = 0; if (sigaction(SIGINT, &intsig, 0) == -1) { printf ("signal(SIGINT) error"); return -1; } if (sigaction(SIGUSR2, &usrsig, 0) == -1) { printf ("signal(SIGUSR2) error"); return -1; } while(1) { printf("%d\n", i); i++; sleep(1); } } void sig_int(int signo) { sigset_t sigset, oldset; sigfillset(&sigset); if (sigprocmask(SIG_BLOCK, &sigset, &oldset) < 0) { printf("sigprocmask %d error \n", signo); } fprintf(stderr, "SIGINT !!!!\n"); sleep(5); } void sig_usr(int signo) { printf("sig_usr2\n"); }
sigaction(2)
시그널 다루기 2
시그널 다루기 3
쓰레드와 시그널
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. sigemptyset(2)
시그널 관련 조작
1.1. 사용법
1.2. 설명
sigemptyset함수는 인자로 주어진 시그널 셋인 set 에 포함되어 있는 모든 시그널을 비운다.
sigfillset는 set에 포함된 모든 시그널을 채운다.
sigaddset과 sigdelset는 set로 부터 시그널 번호가 signum인 시그널을 추가하거나 삭제한다.
1.3. 반환값
성공할 경우 0실패할 경우 -1을 리턴한다.
1.4. 에러
잘못된 시그널 번호를 사용했다.
1.5. 예제
1.6. 참고문헌
sigaction(2)
시그널 다루기 2
시그널 다루기 3
쓰레드와 시그널
Recent Posts
Archive Posts
Tags