시그널(Signal)이란, 소프트웨어 인터럽트로 예기치 않은 사건이 발생했을 때 이 사건에 대한 메시지를 비동기적으로 보내는 것을 말합니다. 시그널을 받은 프로세스는 시그널에 따른 지정된 기본 동작을 수행할 수도 있고, 사용자 정의에 의한 처리 동작을 수행할 수도 있다.
운영체제에는 기본적으로 정의된 시그널이 존재하는데 이 시그널 내역들을 확인하기 위해서 터미널에 kill -l
을 입력하면 아래와 같이 확인할 수 있다.
시그널 번호 | 시그널 이름 | 발생 조건 | 기본 처리 |
---|---|---|---|
1 | SIGHUP | 터미널과 연결이 끊어졌을 때 | 종료 |
2 | SIGINT | 인터럽트로 Ctrl + C 입력 시 | 종료 |
3 | SIGQUIT | Ctrl + W 입력 시 | 코어 덤프 |
4 | SIGILL | 잘못된 하드웨어 명령 사용 | 코어 덤프 |
5 | SIGTRAP | trace, breakpoint에서 TRAP 발생 | 코어 덤프 |
6 | SIGABRT | abort(비정상 종료)함수에 의해 발생 | 코어 덤프 |
8 | SIGFPE | 0으로 나누기와 같은 심각한 산술 오류에 의해 발생 | 코어 덤프 |
9 | SIGKILL | 강제 종료 시 | 종료 |
10 | SIGBUS | 버스 오류 시 | 코어 덤프 |
11 | SIGSEGV | 세그멘테이션 폴트 시(유효하지 않은 메모리 참조) | 코어 덤프 |
12 | SIGSYS | system call을 잘못했을때 | 코어 덤프 |
13 | SIGPIPE | 파이프 처리 잘못했을때 | 코어 덤프 |
14 | SIGALRM | 알람에 의해 발생 | 코어 덤프 |
16 | SIGUSR1 | 사용자 정의 시그널1 | 종료 |
17 | SIGUSR2 | 사용자 정의 시그널2 | 종료 |
18 | SIGCHLD | 자식 프로세스 상태가 변할 때 | 무시 |
19 | SIGSTOP | 프로세스 정지 시그널 | 종료 |
23 | SIGSTOP | SIGCONT 시그널을 받을 때까지 프로세스가 중지됨 | 중지 |
24 | SIGTSTP | Ctrl + Z 입력 시 | 중지 |
25 | SIGCONT | 중지된 프로세스 실행 시 | 무시 |
28 | SIGVTALRM | 가상 타이머 종료 시 | 종료 |
29 | SIGIO | 비동기화 I/O이벤트 알림 | 종료 |
30 | SIGPWR | 전원 고장 | 종료 |