본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 시그널 처리 방법을 설정 함수 signal()

C언어 시그널 처리 방법을 설정 함수 signal()

· 댓글개 · 바다야크

C함수 시그널 처리 방법을 설정 signal()

시그널 처리를 설정합니다.

  • 헤더: signal.h
  • 형태: void (*signal(int signum, void (*handler)(int)))(int)
  • 인수: int signum 시그널 번호
    void (*handler)(int)시그널을 처리할 핸들
  • 반환: void *()(int) 이전에 설정된 시그널 핸들러

시그널 처리는 아래와 같이 설정할 수 있습니다. 즉,

  • 어떤 시그널이 발생하면 기존 방법으로 처리할지
  • 아니면 무시할지
  • 프로그램에서 직접 처리할지를 설정할 수 있습니다.

설정하는 옵션은 3가지가 있습니다.

유형 의미
SIG_DFL 기존 방법을 따른다.
SIG_IGN 시그널을 무시한다.
함수이름 시그널이 발생하면 지정된 함수를 호출한다.

C언어 signal() 함수 예제

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void (*old_fun)( int);

void sigint_handler( int signo)
{
   printf( "Ctrl-C 키를 눌루셨죠!!\n");
   printf( "또 누르시면 종료됩니다.\n");
   signal( SIGINT, old_fun);   // 또는 signal( SIGINT, SIG_DFL);
}

int main( void)
{
   old_fun = signal( SIGINT, sigint_handler);
   while(1 ){
      printf( "badayak.com\n");
      sleep( 1);
   }
}

C언어 signal() 예제 실행 결과

]$ ./a.out
badayak.com
badayak.com
badayak.com
badayak.com
^CCtrl-C 키를 눌루셨죠!!
또 누르시면 종료됩니다.
badayak.com
badayak.com
badayak.com
badayak.com
^C
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

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