C함수 블록된 시그널 확인 sigpending()
sigpending() 함수를 사용하면 시그널을 블록된 상태에서 어떤 시그널이 발생해서 블록되었는지를 알 수 있습니다. 즉, 발생했지만 블록되어 대기 중인 시그널이 무엇인지를 확인합니다.
- 헤더: signal.h
- 형태: int sigpending(sigset_t *set)
- 인수: sigset_t *set 블록화된 시그널 집합을 담을 변수
- 반환: 0 == 성공, -1 == 실패
C언어 sigpending() 함수 예제
#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;
}
C언어 sigpending() 예제 실행 결과
]$ ./a.out
카운트: 0
카운트: 1
카운트: 2
^CCtrl-C를 누르셨죠. 무한 루프를 종료합니다.
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 시그널 블록 설정 및 대기 함수 sigsuspend() (0) | 2020.03.16 |
---|---|
C언어 시그널 대기 상태로 설정 함수 sigpromask() (0) | 2020.03.16 |
C언어 지정 시간에 SIGALRM 전송 함수 alarm() (0) | 2020.03.15 |