시그널의 개념
- interprocess communication 이다.
- concurrency 를 만들어낼 수 있는 방법중 하나다.
- 비동기 메시지: POSIX 시그널은 언제든 수신될 수 수있다. (예측 불가능)
- 번호: 각 시그널은 고유한 정수 번호를 가집니다.
시그널의 종류
- 신뢰성 있는 시그널 (Reliable Signals) : (번호)
- 실시간 시그널 (Real-time Signals): (번호 + 데이터) - 다루지 않음
시그널 처리
- 차단/무시: 시그널은 차단하거나 무시할 수 있습니다.
- 수신: 활성화된 시그널은 프로세서 명령어 사이 언제든 수신될 수 있습니다.
- signal handler : 미리 정의된 함수나 사용자 정의함수를 통해 응답에 대한 실행을 한다. → 공유데이터나 글로벌 변수 사용에 조심해야된다.
시그널 종류
POSIX는 다양한 시그널을 이름과 번호로 정의합니다. 몇 가지 예시는 다음과 같습니다.
- SIGHUP (1): 터미널 연결이 끊어졌을 때 전송됩니다.
- SIGINT (2): Ctrl+C를 누르면 전송됩니다.
- SIGKILL (9): 프로세스를 강제 종료하며, uncatchable 시그널입니다.
- SIGSEGV (11): 잘못된 메모리 접근 시 전송됩니다.
- SIGCHLD (17): 자식 프로세스가 종료될 때 전송됩니다.
시그널 핸들러