Manpages

이 름

signal − ANSI C 시 그 널 처 리

사 용 법

#include <signal.h>

void (*signal(int signum, void (*handler)(int)))(int);

설 명

signal 시 스 템 콜 은 signum 번 호 의 시 그 널 에 대 해 새 로 운 시 그 널 핸 들 러 를 설 치 한 다 . 시 그 널 핸 들 러 는 handler로 설 정 되 고 , 사 용 자 정 의 함 수 이 거 나 다 음 것 중 의 하 나 가 될 수 있 다 :

SIG_IGN

시 그 널 을 무 시 한 다 .

SIG_DFL

시 그 널 의 초 기 기 본 동 작 을 하 도 록 한 다 .

시 그 널 핸 드 러 루 틴 에 넘 겨 지 는 정 수 인 자 는 시 그 널 번 호 이 다 . 이 는 여 러 시 그 널 에 대 해 하 나 의 시 그 널 핸 들 러 를 사 용 할 수 있 게 한 다 .

반 환 값

signal은 이 전 의 시 그 널 핸 들 러 의 포 인 터 나 , 에 러 시 SIG_ERR를 리 턴 한 다 .

주 의

SIGKILLSIGSTOP에 시 그 널 핸 들 러 를 지 정 할 수 없 다 .

BSD 시 스 템 과 달 리 , 리 눅 스 의 시 그 널 은 시 그 널 이 발 생 했 을 때 초 기 기 본 동 작 으 로 되 돌 린 다 . 그 러 나 , <signal.h> 대 신 에 <bsd/signal.h>를 포 함 시 키 면 signal__bsd_signal로 재 정 의 되 어 시 그 널 은 BSD에 서 와 같 이 동 작 한 다 . signal의 두 가 지 버 전 은 모 두 sigaction(2)위 에 만 들 어 진 라 이 브 러 리 루 틴 이 다 .

이 맨 페 이 지 의 프 로 토 타 입 이 이 해 되 지 않 는 다 면 다 음 과 같 이 분 리 하 는 것 이 도 움 이 될 지 도 모 른 다 :

typedef void (*sighandler_t)(int);
sighandler_t signal(int
signum, sighandler_t handler);

POSIX에 따 르 면 kill()raise() 함 수 로 발 생 시 킬 수 없 는 SIGFPE, SIGILL 또 는 SIGSEGV 시 그 널 을 무 시 한 후 프 로 세 스 의 동 작 을 알 수 없 다 . 0으 로 나 눠 진 정 수 는 알 수 없 는 결 과 를 낸 다 . 어 떤 아 키 텍 쳐 에 서 는 SIGFPE 시 그 널 이 발 생 한 다 . (-1로 음 의 정 수 를 나 누 는 것 도 SIGFPE를 발 생 시 킨 다 .) 이 시 그 널 을 무 시 하 면 무 한 루 프 에 빠 질 수 도 있 다 .

POSIX (B.3.3.1.3)에 따 르 면 SIGCHLD에 대 한 동 작 은 SIG_IGN으 로 설 정 해 서 는 안 된 다 . 여 기 서 BSD와 SYSV가 다 르 다 . SIGCHLD의 동 작 을 SIG_IGN으 로 설 정 하 는 BSD 소 프 트 웨 어 는 리 눅 스 에 서 는 실 패 한 다 .

호 환

ANSI C

관 련 항 목

kill(1), kill(2), killpg(2), pause(2), raise(3), sigaction(2), signal(7), sigsetops(3), sigvec(2), alarm(2)

역 자

임 종 균 <hermes44 [AT] secsm.org>, 2000년 4월 20일