Search

SIGTERM, SIGKILL, SIGINT 시그널 개념

시그널 핸들링이란?
구분
SIGINT (2)
SIGTERM (15)
SIGKILL (9)
의미
사용자 중단 요청 (Interrupt)
정상 종료 요청 (Termination Request)
강제 종료 (Forced Kill)
발생 시점
주로 사용자가 Ctrl+C 입력
일반적으로 kill 명령어 실행시 기본값
kill -9 또는 시스템 강제 종료 시
기본 동작
프로세스에 인터럽트 요청 → 정상적인 종료 처리 실행
종료 핸들러 실행 기회 제공
즉시 강제 종료
프로세스 대응
무시 가능, 시그널 핸들러로 처리 가능
무시 가능, 시그널 핸들러로 처리 가능
무시 불가능 (non-maskable, non-catchable)
우선순위
사용자 개입 수준
일반 종료 시퀀스
최우선, 무조건 종료
리소스 정리
가능 (시그널 핸들러에서 정리 가능)
가능 (핸들러 내부에서 리소스 정리 수행 가능)
불가능 (리소스 누수 위험 있음)
커널 개입
커널이 시그널 전달 → 프로세스 핸들링
커널이 시그널 전달 → 프로세스 핸들링
커널이 직접 종료 (컨텍스트 무시하고 즉시 종료)
사용 예시
사용자가 Ctrl+C 입력
kill PID (기본값)
kill -9 PID
시스템 콜
kill(pid, SIGINT)
kill(pid, SIGTERM)
kill(pid, SIGKILL)
프로세스 상태 전이
Running → Signal Handling → (계속/종료)
Running/Waiting → Terminating → Zombie → Removed
Running/Waiting → Zombie → Removed
자식 프로세스 처리
일반적으로 전파되지 않음
애플리케이션 설정에 따라 자식에게도 전파 가능
자식 프로세스 포함 전체 강제 종료 (kill -9 트리 구조 시)
비동기성
처리 핸들링 가능 (시그널 핸들러 등록)
비동기적으로 처리 가능
즉시 처리됨, 핸들링 불가
SIGTERM 은 "정중한 종료 요청"으로, 프로세스에게 "작업을 마무리하고 종료해달라"는 의미이며, SIGKILL 은 "즉각적인 강제 종료 명령"으로 프로세스에게 어떤 기회도 주지 않고 즉시 종료시킨다.
SIGTERM (15) - 정상적인 종료 요청
SIGKILL (9) - 강제 종료