tail head cat sleep
QR code linking to this page

Man page  — SIGNAL

명칭

signal – 단순화 된 소프트웨어 시그널 기능

내용

서식


#include <signal.h>
void (*
signal(int sig, void (*func)(int)))(int);

or in FreeBSD's equivalent but easier to read typedef'd version:
typedef void (*sig_t) (int)
sig_t
signal(int sig, sig_t func);

해설

signal() 기능은, 좀 더 일반적인 sigaction(2) 기능에의 단순화 되었다 인터페이스입니다.

시그널에 의해, 그 도메인외의 프로세스의 조작이 가능하게 되어, 프로세스가 자신 또는 자신의 카피(child process)를 조작할 수 있습니다. 시그널에는 다음의 2 개의 일반적인 타입이 있습니다. 프로세스를 종료시키는 것, 및 그렇지 않는 것입니다. 프로그램의 종료를 발생시키는 시그널은, 회복 불가능한 에러의 결과인 일도 있고, 「세치기」캐릭터를 입력하는 단말의 유저의 결과인 일도 있습니다. 시그널이 사용되는 것은, 프로세스가 정지되었을 때입니다. 백그라운드에 있으면서 제어 단말에 액세스 할 필요가 있기 때문입니다 ( tty(4) (을)를 참조 ) 프로세스가 정지된 후, 재개될 때, child process의 스테이터스가 변화했을 때, 또는 입력이 제어 단말로 준비가 되어 있을 때입니다. 처치가 행해지지 않는 경우, 대부분의 시그널은 시그널을 받는 프로세스의 종료라고 한다 결과가 됩니다. 시그널에 따라서는, 대신에 프로세스가 시그널을 받고 나서 정지시키는 것도 있고, 프로세스가 다른 요구 를 하고 있지 않은 경우는 단지 폐기되는 것도 있습니다. SIGKILL 시그널과 SIGSTOP 시그널을 제외해, signal() 함수는, 시그널을 포착, 무시, 또는 끼어들어 생성할 수 있도록(듯이) 합니다. 이러한 시그널은 파일 < signal.h> 에 정의되고 있습니다.
이름 디폴트 처치 설명
SIGHUP 프로세스의 종료 단말 라인의 행업
SIGINT 프로세스의 종료 프로그램에 끼어든다
SIGQUIT core image 작성 프로그램을 종료한다
SIGILL core image 작성 부정 인스트럭션
SIGTRAP core image 작성 트랩을 추적한다
SIGABRT core image 작성Ta(abort) 2호출 (이전에는 SIGIOT)
SIGEMT core image 작성 에뮤레이트 인스트럭션이 실행된다
SIGFPE core image 작성 부동 소수점 예외
SIGKILL 프로세스의 종료 프로그램을 말소한다
SIGBUS core image 작성 버스 에러
SIGSEGV core image 작성 부분화 침범
SIGSYS core image 작성 부존재의 시스템 콜을 호출한다
SIGPIPE 프로세스의 종료 리더(reader)가 없는 파이프에 기입한다
SIGALRM 프로세스의 종료 리얼 타이머가 마감 시간
SIGTERM 프로세스의 종료 소프트웨어 종료 시그널
SIGURG 시그널을 폐기 소켓상에 존재하는 긴급 상황
SIGSTOP 프로세스의 정지 정지한다(포착 또는 무시할 수 없다)
SIGTSTP 프로세스의 정지 키보드로부터 생성된 시그널을 정지한다
SIGCONT 시그널을 폐기 정지의 뒤도 계속한다
SIGCHLD 시그널을 폐기 자 스테이터스가 변화했다
SIGTTIN 프로세스 정지 제어 단말로부터 시도된 백그라운드 독해
SIGTTOU 프로세스 정지 제어 단말에 대해 시도된 백그라운드 기입
SIGIO 시그널을 폐기기술자상에서 입출력이 가능 ( fcntl(2) (을)를 참조)
SIGXCPU 프로세스의 종료 " 프로세스 cpu 시간제한을 초과(setrlimit(2) (을)를 참조)
SIGXFSZ 프로세스의 종료 " 파일 사이즈 제한을 초과(setrlimit(2) (을)를 참조)
SIGVTALRM 프로세스의 종료 " 가상 시간 알람(setitimer(2) (을)를 참조)
SIGPROF 프로세스의 종료 " 프로파일화 타이머 알람(setitimer(2) (을)를 참조)
SIGWINCH 시그널을 폐기 윈도우 사이즈의 변화
SIGINFO 시그널을 폐기 키보드로부터의 스테이터스 요구
SIGUSR1 프로세스의 종료 유저 정의 시그널 1
SIGUSR2 프로세스의 종료 유저 정의 시그널 2

sig 파라미터는 어느 시그널이 수신되었는지를 지정합니다. func 프로시저는, 유저가 시그널 수신시에 처치를 선택할 수 있도록(듯이) 합니다. 상기에 리스트 한 것처럼 발생하도록(듯이) 시그널의 디폴트 처치를 설정하려면 , func SIG_DFL 이다 필요가 있습니다. SIG_DFL (은)는, 디폴트의 처치를 리셋트 합니다. 시그널을 무시하기 위해서는, func SIG_IGN (으)로 할 필요가 있습니다. 이것에 의해, 후속의 시그널의 인스턴스가 무시되어 중단중의 인스턴스가 폐기됩니다. SIG_IGN 하지만 사용되지 않는 경우는, 그 이상으로 발생한 시그널은 자동적으로 블록 되어 func 하지만 불려 갑니다.

취급되는 시그널은, 함수가 돌아올 때는 블록 되지 않고, 시그널이 발생했을 때에 프로세스는 중단했는데로부터 계속합니다. 이전의 시그널 기능과 달리, 핸들러 func()는 시그널이 전달된 후도 인스톨 된 채로 있습니다.

시스템 콜에 따라서는, 호출이 실행중에 시그널이 포착되어 호출이 완료전에 종료되었을 경우, 호출이 자동적으로 재개됩니다 (핸들러는 sigaction(2) 그리고 SA_RESTART 플래그를 사용해 인스톨 됩니다). 영향을 받는 시스템 콜에는, 통신 채널상 또는 저속 디바이스상 및 ioctl(2) 또는 wait(2) 의 사이의, read(2), write(2), sendto(2), recvfrom(2), sendmsg(2), 및 recvmsg(2) 하지만 포함됩니다. 그러나, 이미 위탁 끝난 호출은 재개시 되지 않고, 대신에 부분적인 처리 성공이 돌려주어집니다 (예를 들어, 짧은 독해 카운트 ).

시그널 핸들러를 인스톨 한 프로세스가 포크 하면(자), child process는 시그널을 계승합니다. 포착된 모든 시그널이, execve(2) 함수의 호출에 의해, 디폴트의 처치로 리셋트 됩니다. 무시된 시그널은 무시된 채로 있습니다.

반환값

호출이 성공하면(자), 직전의 처치가 돌려주어집니다. 그렇지 않은 경우, SIG_ERR 가 돌려주어져 글로벌 변수 errno 하지만 설정되어 에러를 나타냅니다.

에러

signal() (은)는 다음 중 1 개(살)이 발생하면(자) 처리 실패해, 처치는 취해지지 않습니다.
[EINVAL]
  Sig (은)는 유효한 시그널 번호가 아닙니다.
[EINVAL]
  SIGKILL 또는 SIGSTOP 에 대한 핸들러를 무시 또는 지정하려고 하는 시도를 합니다.

관련 항목

kill(1), kill(2), ptrace(2), sigaction(2), sigaltstack(2), sigprocmask(2), sigsuspend(2), fpsetmask(3), setjmp(3), tty(4)

역사

signal 기능은 BSD 4.0 그리고 나타났습니다.

BSD 4 SIGNAL (3) April 19, 1994

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.