1. [운영체제] 시그널 (Signal)
ㅇ 프로세스 간에 메세지 전달 방법
- 비동기적 사건(이벤트,예외 등)이 발생됐음을 다른 프로세스에게 알릴 때 사용
. 즉, 소프트웨어에 의해 시작되는 프로세스 간 통신(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] 시그널 처리
ㅇ 시그널이 프로세스에게 전달되면, 이를 반드시 처리 해야 함