리눅스 시스템 프로그래밍
#37 기본 시그널 처리 1
쿠리 Kuri
2022. 10. 12. 18:30
반응형
시그널
정의
- 비동기 이벤트를 처리하기 위한 메커니즘
- 소프트웨어 인터럽트
쓰이는 곳
- Ctrl + C
- Child process termination
- Alarm
- divide by zero
- Inter-process communication
- ...
정보
- 시그널 번호 + 추가적인 정보 + (아주 작은) 사용자 정의 데이터
시그널의 처리
무시
- 아무런 동작도 하지 않음
- SIGKILL, SIGSTOP은 무시 불가능
처리
- 시그널 별 처리 함수를 수행
기본 동작
-시그널 종류 별 기본 동작 수행
- 프로세스 종료
- 코어덤프 생성 후 종료
- 무시
- 정지
주요 시그널 번호
시그널 번호 | 기본 동작 | 의미 |
SIGHUP | 종료 | 프로세스의 제어 터미널 닫힘(사용자 로그아웃), 설정 리로드 |
SIGINT | 종료 | 사용자가 Ctrl + C 발생 |
SIGKILL | 종료 | 붙잡을 수 없는 프로세스 종료 |
SIGSEGV | 코어 덤프 | 메모리 접근 위반 |
SIGALARM | 종료 | 알람 발생 |
SIGTERM | 종료 | 붙잡을 수 있는 프로세스 종료 |
SIGUSR1/2 | 종료 | 사용자 정의 시그널 |
SIGCHLD | 종료 | 자식 프로세스 종료 |
SIGCONT | 진행 | 프로세스를 정지했다가 계속 수행함 |
SIGSTOP | 정지 | 프로세스 실행 보류 |
시그널의 실행과 상속
- fork() -> 자식 프로세스는 부모 프로세스의 시그널 동작을 상속 받는다.
- exec() -> 부모 프로세스가 붙잡아 처리하는 시그널은 기본 동작으로 변경된다.
시그널 동작 | fork() 수행 후 | exec() 수행 후 |
무시 | 상속됨 | 상속됨 |
기본 동작 | 상속됨 | 상속됨 |
붙잡아 처리 | 상속됨 | 상속되지 않음(기본 동작 처리) |
대기 중인 시그널 | 상속되지 않음 | 상속됨 |
반응형