1. [운영체제] 시그널 (Signal)
ㅇ 시그널을, 소프트웨어 인터럽트 라고도 함
- 이에의해, 프로그램 실행의 일반적인 흐름이 중단되고 가로채어짐
ㅇ 사용자(단말) 또는 커널이 프로세스에게 무언가를 통지하는 목적으로 사용됨
- 만약, 프로세스가, 특정 이벤트 발생을 알리는 시그널을 받으면,
. 자신의 코드에 들어있는 시그널 관련 핸들러 함수를 실행시키게 됨
- 특히, 대부분의 시그널 기본 동작은,
. 프로세스를 종료시키는 것과 연관됨
ㅇ 시그널은, 프로세스 간에 메세지 전달 방법 중 하나임 ☞ 프로세스 간 통신 (IPC) 참조
- 비동기적 사건(이벤트,예외 등)이 발생됐음을 다른 프로세스에게 알릴 때 사용
. 즉, 소프트웨어에 의해 시작되는 `프로세스 간 통신 (IPC)`의 비동기적 방법
2. [Unix/Linux] 시그널
ㅇ (구분) SIGxxx : 보통 고유의 작은 정수형으로 하고, 1부터 순차 증가
- 각 시그널의 심볼 명이, < signal.h >에 정의됨
. 실제 숫자는 구현에 따라 달라질 수 있음
ㅇ 주요 例)
- HUP : Hangup, 로그아웃 후 실행종료
. SIGHUP 1 : 터미널이나 프로세스의 제어권 중단
- INT : Interrupt, 인터럽트
. SIGINT 2 : 키보드에서 오는 인터럽트 (Ctrl+C)
- QUIT : Quit, 중지
. SIGQUIT 3 : 키보드에 의한 중지, 코어 덤프 (Ctrl+\)
- ILL : ill, 잘못된
. SIGILL 4 : 잘못된 명령
- KILL : 무조건적이고 즉각적인 종료
. SIGKILL 9 : 프로세스 강제 종료
- ALRM : Alarm
. SIGALRM 14 : 알람에 의해 발생되며 종료
- TERM : Terminate, 자연스런 실행 종료
. SIGTERM 15 : 정상 종료 작업 처리 후에 끝냄
ㅇ 시그널 관련 명령어
- 시그널 목록 확인 명령어 : kill -l
- 시그널 지시 명령어 : kill -옵션번호 프로세스ID
3. [Unix/Linux] 시그널 처리
ㅇ 시그널이 프로세스에게 전달되면, 이를 반드시 처리 해야 함