유닉스 신호

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

신호유닉스, 유닉스 계열, 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 없음 종료 (코어 덤프) 오류가 있는 산술 조작.
SIGHUP 1 종료 행업(Hangup).
SIGILL 없음 종료 (코어 덤프) 유효하지 않은 명령.
SIGINT 2 종료 터미널 인터럽트 신호.
SIGKILL 9 종료 킬 (신호를 잡거나 무시할 수 없음).
SIGPIPE 없음 종료 신호를 읽는 사용자가 없는 상태에서 파이프에 기록.
SIGPOLL 없음 종료 폴링 가능한 이벤트.
SIGPROF 없음 종료 프로파일링 타이머 시간 초과.
SIGQUIT 3 종료 (코어 덤프) 터미널 종료 신호.
SIGSEGV 없음 종료 (코어 덤프) 잘못된 메모리 참조.
SIGSTOP 없음 정지 실행 정지 (신호를 잡거나 무시할 수 없음)
SIGSYS 없음 종료 (코어 덤프) 불량 시스템 호출.
SIGTERM 15 종료 종료 신호.
SIGTRAP 없음 종료 (코어 덤프) 트레이스/브레이크포인트 트랩.
SIGTSTP 없음 정지 터미널 정지 신호.
SIGTTIN 없음 정지 백그라운드 프로세스 읽기 시도.
SIGTTOU 없음 정지 백그라운드 프로세스 쓰기 시도.
SIGUSR1 없음 종료 사용자 정의 신호 1.
SIGUSR2 없음 종료 사용자 정의 신호 2.
SIGURG 없음 무시 높은 대역의 데이터를 소켓에서 이용 가능.
SIGVTALRM 없음 종료 가상 타이머 시간 초과.
SIGXCPU 없음 종료 (코어 덤프) CPU 시간 제한 초과.
SIGXFSZ 없음 종료 (코어 덤프) 파일 크기 제한 초과.

각주[편집]

  1. McIlroy, M. D. (1987). 《A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986》 (PDF) (기술 보고서). CSTR. Bell Labs. 139. 

외부 링크[편집]