시그널
소프트웨어 인터럽트 프로세스에 뭔가 발생했음을 알리는 간단한 메시지를 비동기적으로 보내는 것
유닉스 운영체제거 프로세스에 전달함
- 발생하는 경우
- 0으로 나누기와 같이 프로그램에서 예외적인 상황이 일어난 경우
- 프로세스가 시그널을 보낼 수 있는 함수 사용해 다른 프로세스에 시그널 보내는 경우 (kill)
- 사용자가 ctrl+c 같은 인터럽트 키 입력한 경우
- 처리 방법
- 받은 시그널에 따라 기본 동작 수행함 (대부분 종료)
- 시그널 무시 - 시그널 무시하기로 지정하면 유닉스는 프로세스에 시그널 전달 안함
- 시그널 처리 함수를 지정해놓고 시그널 받으면 해당 함수를 호출해 처리 (시그널 핸들러)
- 시그널 발생하지 않도록 블록 처리 (큐에 쌓여 있다가 시그널 블록이 해제되면 전달됨)
- 시그널 종류
- <signal.h> 파일에 정의되어 있음
- 종료 - 프로세스가 그냥 종료되는 것
- 코어 덤프 - 코어 파일 만들고 종료하는 것
- SIGINT (ctrl+c)
- SIGQUIT (ctrl+\)
- SIGKILL 강제종료
- SIGALRM - 알람
- SIGUSR1, SIGUSR2 - 사용자 정의 시그널 1, 2