Linux

시그널의 종류

정든친구 2019. 8. 25. 22:15
시그널 명 기본 동작 설명
SIGABRT 코어/종료 이 시그널은 abort()를 실행시켰을 때 발생한다. 보통 비정상적 종료를 의미한다.
SIGALRM 종료 이 시그널은 alarm()을 사용하여 타이머를 설정한 후 타이머가 종료되었을 경우 발생한다. 또는 setitimer()를 사용하여 타이머를 설정한 경우에도 발생된다.
SIGCHLD 무시 자식 프로세스가 종료되었을 경우 부모 프로세스에 보내지는 시그널이다.
SIGCONT 재시작 작업 제어 시그널로 멈춰져 있는 프로세스에 이 시그널을 보낼 시에 그 프로세스는 작업을 다시 시작하게 된다. 현재 동작중인 프로세스에서는 이 시그널을 무시한다.
SIGFPE 코어/종료 산술 연산에서 에러가 발생할 때 받게 되는 시그널이다. 0으로 나눈다거나 하는 연산이 있을 경우 발생된다.
SIGHUP 종료 이 시그널은 작업중인 터미널이 종료되었을 경우 해당하는 세션 리더에게 보내지는 시그널이다. 또는 세션 리더가 종료되었을 경우 그 세션에 속하는 프로세스들에게 이 시그널이 보내진다.
SIGILL 코어/종료 비합법적인 명령어(illegal instruction)을 실행할 경우 발생되는 시그널이다.
SIGINT 종료 작업 터미널에서 인터럽트 키(보통 'Ctrl + C')를 이력했을 경우 발생하는 시그널이다. 이 시그널은 해당하는 터미널의 전면(foreground)에 있는 프로세스들에게 전달된다.
SIGKILL 종료 프로세스에서 이 시그널을 받으면 프로세스가 기본적으로 종료된다. 이는 절대 시그널을 받는 것을 무시하거나 특정 시그널 루틴을 등록할 수 없는 시그널 중의 하나이다. 이 시그널을 받으면 프로세스는 반드시 종료돼야 하기 때문이다.
SIGPIPE 종료 파이프를 통하여 쓰기를 할 경우 상대방의 파이프가 닫혀 있으면 이 시그널이 발생된다.
SIGQUIT 코어/종료 작업 터미널에서 종료(quit) 키(보통 'Ctrl + \')를 입력했을 경우 발생하는 시그널이다. 역시 해당하는 터미널의 전면에 있는 프로세스들에게 전달된다.
SIGSEGV 코어/종료 잘못된 메모리 참조시 발생하는 시그널이다. 'SEGV'는 'segmentation violation'을 의미.
SIGSTOP 멈춤 작업 제어 시그널로 프로세스르 ㄹ멈추게 하는 시그널이다. 이 시그널 역시 시그널을 받는 것을 무시하거나 특정 시그널 루틴을 등록할 수 없는 시그널 중 하나이다.
SIGSYS 코어/종료 시스템 콜을 잘못 사용했을 때 발생한다. 시스템 콜의 인자가 잘모소딘 타입을 가지거나 하면 발생된다.
SIGSTP 멈춤 작업 터미널에서 중단 키(보통 'Ctrl + Z')를 누를 경우 발생하는 시그널이다. 프로세스를 멈추게 하는 시그널이다. 역시 터미널의 전면에 있는 프로세스들에게 전달된다.
SIGTTIN 멈춤 배경 작업에 있는 프로세스에서 표준 입력으로 데이터를 받으려고 하면 이 시그널이 발생된다. 해당하는 프로세스는 멈추게 된다.
SIGTTOU 멈춤 배경 작업에 있는 프로세스에서 표준 출력으로 데이터를 쓰려고 하면 이 시그널이 발생된다. 해당하는 프로세스는 멈춘다.
SIGUSR1 종료 사용자 정의 시그널
SIGUSR2 종료 사용자 정의 시그널
  • 종료: 프로세스가 종료됨
  • 코어/종료: 프로세스가 코어 파일을 생성하고 종료됨
  • 멈춤: 프로세스가 멈춤
  • 재시작: 멈춰있던 프로세스를 다시 시작함
  • 무시: 해당 시그널 무시

<출처: Unix/Linux C Programming - p590>