본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 블록된 시그널 확인 함수 sigpending()

C언어 블록된 시그널 확인 함수 sigpending()

· 댓글개 · 바다야크

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를 누르셨죠. 무한 루프를 종료합니다.
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.