글 수 16
2008.01.02 10:12:02 (*.33.84.154)
43072
설명
sigpending() 함수를 사용하면 시그널을 블록된 상태에서 어떤 시그널이 발생해서 블록되었는지를 알 수 있습니다. 즉, 발생했지만 블록되어 대기 중인 시그널이 무엇인지를 확인합니다.
헤더 | signal.h | |||||
형태 | int sigpending(sigset_t *set); | |||||
인수 |
|
|||||
반환 |
|
예제
#include <stdio.h> #include <unistd.h> #include <signal.h> int main( void) { sigset_t sigset; sigset_t pendingset; int ndx = 0; // 모든 시그널을 블록화 sigfillset( &sigset); sigprocmask( SIG_SETMASK, &sigset, NULL); while( 1 ) { printf( "카운트: %d\n", ndx++); sleep( 1); if ( 0 == sigpending( &pendingset)) { if ( sigismember( &pendingset, SIGINT)) { printf( "Ctrl-C를 누르셨죠. 무한 루프를 종료합니다.\n"); break; } } } return 0; }
]$ ./a.out 카운트: 0 카운트: 1 카운트: 2 카운트: 3 <--- Ctrl-C 키를 누름 Ctrl-C를 누르셨죠. 무한 루프를 종료합니다. ]$