유닉스 신호
유닉스, 유닉스 계열, POSIX 호환 운영 체제에 쓰이는 제한된 형태의 프로세스 간 통신
신호는 유닉스, 유닉스 계열, POSIX 호환 운영 체제에 쓰이는 제한된 형태의 프로세스 간 통신이다. 신호는 프로세스나 동일 프로세스 내의 특정 스레드로 전달되는 비동기식 통보이다. 이러한 신호들은 1970년대 벨 연구소를 통해 존재한 뒤로 최근의 시기에는 POSIX 표준에 정의되어 있다.
역사
편집버전 1 유닉스는 별도의 시스템 호출을 사용하여 인터럽트를 잡고 종료하고 머신 트랩을 수행하였다. 버전 4 유닉스 들어 모든 트랩을 하나의 호출 '신호'로 병합하였으며 버전 7에서 숫자마다 매겨진 각 트랩이 상징적인 이름을 가져가게 되었다. kill이 버전 2에 등장하였으며 버전 5에서는 임의의 신호들을 내보낼 수 있게 되었다.[1]
신호 보내기
편집실행 중인 프로세스의 제어 터미널에서 특정 키 조합을 입력하면 시스템이 특정 신호를 내보낸다:
- Ctrl-C (구 유닉스에서는 DEL): INT 신호 (SIGINT)를 내보낸다. 기본적으로 프로세스를 종료하는 역할을 한다.
- Ctrl-Z: TSTP 신호 (SIGTSTP)를 내보낸다. 기본적으로 프로세스가 실행을 유예시키는 역할을 한다.
- Ctrl-\: QUIT 신호 (SIGQUIT)를 내보낸다. 기본적으로 프로세스를 종료시킨 뒤 코어를 덤프하는 역할을 한다.
- Ctrl-T (모든 종류의 유닉스에서 지원하지는 않음): INFO 신호 (SIGINFO)를 내보낸다. 명령에서 지원하는 경우 기본적으로 운영 체제가 실행 중인 명령에 대한 정보를 표시한다.
현대 운영 체제에서 이러한 기본 키 조합들은 stty
명령으로 변경할 수 있다.
POSIX 신호
편집신호 | 이식 가능한 번호 | 기본 동작 | 설명 |
---|---|---|---|
SIGABRT | 6 | 종료 (코어 덤프) | 프로세스 중단 신호 |
SIGALRM | 14 | 종료 | 알람 클럭 |
SIGBUS | 없음 | 종료 (코어 덤프) | 정의되지 않은 메모리 오브젝트의 일부분에 접근. |
SIGCHLD | 없음 | 무시 | 차일드 프로세스 종료, 중단, 계속 |
SIGCONT | 없음 | 계속 | 정지하지 않으면 계속 실행. |
SIGFPE | 8 | 종료 (코어 덤프) | 오류가 있는 산술 조작. |
SIGHUP | 1 | 종료 | 행업(Hangup). |
SIGILL | 4 | 종료 (코어 덤프) | 유효하지 않은 명령. |
SIGINT | 2 | 종료 | 터미널 인터럽트 신호. |
SIGKILL | 9 | 종료 | 킬 (신호를 잡거나 무시할 수 없음). |
SIGPIPE | 13 | 종료 | 신호를 읽는 사용자가 없는 상태에서 파이프에 기록. |
SIGPOLL | 없음 | 종료 | 폴링 가능한 이벤트. |
SIGPROF | 없음 | 종료 | 프로파일링 타이머 시간 초과. |
SIGQUIT | 3 | 종료 (코어 덤프) | 터미널 종료 신호. |
SIGSEGV | 11 | 종료 (코어 덤프) | 잘못된 메모리 참조. |
SIGSTOP | 없음 | 정지 | 실행 정지 (신호를 잡거나 무시할 수 없음) |
SIGSYS | 없음 | 종료 (코어 덤프) | 불량 시스템 호출. |
SIGTERM | 15 | 종료 | 종료 신호. |
SIGTRAP | 5 | 종료 (코어 덤프) | 트레이스/브레이크포인트 트랩. |
SIGTSTP | 없음 | 정지 | 터미널 정지 신호. |
SIGTTIN | 없음 | 정지 | 백그라운드 프로세스 읽기 시도. |
SIGTTOU | 없음 | 정지 | 백그라운드 프로세스 쓰기 시도. |
SIGUSR1 | 없음 | 종료 | 사용자 정의 신호 1. |
SIGUSR2 | 없음 | 종료 | 사용자 정의 신호 2. |
SIGURG | 없음 | 무시 | 높은 대역의 데이터를 소켓에서 이용 가능. |
SIGVTALRM | 없음 | 종료 | 가상 타이머 시간 초과. |
SIGXCPU | 없음 | 종료 (코어 덤프) | CPU 시간 제한 초과. |
SIGXFSZ | 없음 | 종료 (코어 덤프) | 파일 크기 제한 초과. |
SIGWINCH | 없음 | 무시 | 터미널 창 크기가 변경됨. |
같이 보기
편집각주
편집- ↑ McIlroy, M. D. (1987). 《A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986》 (PDF) (기술 보고서). CSTR. Bell Labs. 139.
외부 링크
편집- (영어) Unix Signals Table, Ali Alanjawi, University of Pittsburgh Archived 2015년 8월 19일 - 웨이백 머신
- (영어) Man7.org Signal Man Page
- (영어) Introduction to Unix Signals Programming
- (영어) Another Introduction to Unix Signals Programming Archived 2015년 8월 11일 - 웨이백 머신
- (영어) UNIX and Reliable POSIX Signals Archived 2016년 3월 3일 - 웨이백 머신 by Baris Simsek
- (영어) Signal Handlers by Henning Brauer