함수 기능
팬딩 중이거나, 블록되었을 때 발생한 시그널 집합을 가져오는 시스템호출 함수
함수 원형
#include<signal.h>
int sigpending(sigset_t *set)
함수 파라메터
set
인자가 가리키는 곳에 호출한 프로세스에 시그널이 블록되어있으며 현재 팬딩 중인 시그널들의 집합을 저장한다.
함수 예제
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
int main(void) {
sigset_t pendingset;
sigset_t sig_set;
int count = 0;
//sig_set을 1로 초기화
sigfillset(&sig_set);
//sig_set이 프로세스의 시그널 마스크가 됨
sigprocmask(SIG_SETMASK, &sig_set, NULL);
while(1) {
printf("count: %d\n", count++);
sleep(1);
//유보 중인 시그널 집합을 찾음
if(sigpending(&pendingset) == 0) {
//SIGINT가 존재하는지 확인
if(sigismember(&pendingset, SIGINT)) {
printf("SIGINT 블록되어 대기 중. 무한 루프를 종료.\n");
break;
}
}
}
exit(0);
}
함수 결과
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX 디몬 코딩 규칙 daemon (0) | 2022.06.01 |
---|---|
C / LINUX sigprocmask(2) (0) | 2022.05.31 |
C / LINUX alarm(2) (0) | 2022.05.31 |
C / LINUX raise(3) (0) | 2022.05.31 |
C / LINUX signal(2) (0) | 2022.05.31 |