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
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 시그널 처리 함수 sigaction() (0) | 2020.03.15 |
---|---|
C언어 지정한 시간만큼 대기 함수 sleep() (0) | 2020.03.15 |
C언어 메모리를 특정 값으로 초기화 함수 memset() (0) | 2020.03.15 |