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>