한숨 쉬다
SIGHUPPOSIX 준거 플랫폼에서는, SAHUP(신호 절단)는, 제어 단말기가 닫혔을 때에 프로세스에 송신되는 신호입니다.(당초 시리얼 회선 폐기를 프로세스에 통지하도록 설계되어 있습니다).SAHUP은 헤더 파일에 정의된 심볼 상수입니다. signal.h
.
역사
수년간 컴퓨터 시스템에 대한 액세스는 시리얼 회선과 RS-232 프로토콜을 통해 단말기를 메인프레임 시스템에 연결하는 것으로 구성되었습니다.이러한 이유로, 신호라고 불리는 소프트웨어 인터럽트 시스템이 개발되고 있을 때, 신호는 "Hangup"에서 사용하도록 지정되었습니다.
시리얼 회선이 끊어지면, SAHUP 가 프로그램으로 송신됩니다.대부분의 경우, 접속 유저가 모뎀을 절단해 접속을 종료했기 때문입니다.회선이 손실된 Data Carrier Detect(DCD; 데이터 캐리어 검출) 신호를 통해 드롭된 것을 검출합니다.
신호는 항상 편리한 프로세스 간 통신(IPC) 방식이었지만 초기 구현에서는 프로그램이 자체 목적을 위해 가로채고 해석할 수 있는 사용자 정의 가능한 신호(SIGUSR1 및 SIGUSR2의 이후 추가 등)가 없었습니다.이 때문에 데몬 등 제어 단말기가 필요 없는 어플리케이션은 SAHUP을 신호로 재사용하여 컨피규레이션파일을 다시 읽거나 재초기화합니다.이 규칙은 Apache 및 Sendmail 등의 패키지로 오늘날까지 유지됩니다.
현대적인 사용법
시리얼 회선을 통한 접속이 감소함에 따라 현대 시스템에서는 SAHUP의 의미가 다소 변화하고 있으며, 이는 종종 제어용 의사 또는 가상 단말기가 폐쇄되었음을 의미합니다.명령어가 터미널 창 내에서 실행되고 명령어프로세스가 실행 중일 때 터미널 창이 닫히면 SAHUP을 [1]수신합니다.
SAHUP를 수신하는 프로세스가 Unix 쉘인 경우, 작업 제어의 일부로서 신호를 대행 수신해, 자녀 프로세스(좀 더 정확하게는 셸에 의해 내부적으로 "작업"으로 표현되는 프로세스 그룹)에 신호를 보내기 전에 정지된 모든 프로세스가 계속되도록 하는 것이 일반적입니다.이 프로세스는 기본적으로 [2]종료됩니다.
이것은 두 가지 방법으로 회피할 수 있다.첫째, Single UNIX Specification은 nohup이라는 셸 유틸리티를 기술하고 있으며, 이는 프로그램을 시작하고 기본적으로 SAHUP을 무시하기 위한 래퍼로 사용될 수 있습니다.둘째, 하위 프로세스 그룹은 작업 ID를 사용하여 해체를 호출하여 "거부"할 수 있습니다. 그러면 셸의 작업 테이블에서 프로세스 그룹이 제거되므로(SHEYUP이 전송되지 않음), 작업 테이블에서 유지되지만 셸 종료 시 SAHUP을 수신하지 못하게 됩니다.
다른 셸에는 ksh의 disown facility와 같은 다른 SAHUP 제어 및 관리 방법도 있습니다.대부분의 최신 Linux 배포 문서에서는 다음과 같이 규정하고 있습니다.kill -HUP <processID>
SHEYUP [3]신호를 보냅니다.
데몬 프로그램은 SAHUP을 재기동 신호로 사용하는 경우가 있습니다.이 가장 일반적인 이유는 변경된 컨피규레이션파일을 다시 읽기 위해서입니다.
세부 사항
심볼릭 신호명은 신호번호가 플랫폼에 따라 다를 수 있기 때문에 사용되지만 XSI 준거 시스템에서는 숫자 상수1 을 사용하여 실제로는 대부분의 시스템이 사용하고 있는SHEYUP 를 나타낼 수 있습니다.
SAHUP은 대응할 수 있습니다.즉, 프로그래머는 함수를 호출하거나 무시하거나 기본 액션을 복원하는 등 SAHUP을 수신했을 때 수행할 액션을 정의할 수 있습니다.
POSIX 준거 시스템의 디폴트액션은 비정상 종료입니다.
레퍼런스
- ^ 를 클릭합니다Kerrisk, Michael, ed. (25 July 2009), "SIGNAL(7)", Linux Programmer's Manual (version 3.22), The Linux Kernel Archives, retrieved 23 September 2009.
- ^ 를 클릭합니다Garrels, Machtelt, ed. (27 December 2008), "Signals", Bash Guide for Beginners, ver. 1.11, The Linux Documentation Project, retrieved 23 September 2009.
- ^ 를 클릭합니다Kerrisk, Michael, ed. (25 July 2009), "KILL(2)", Linux Programmer's Manual (version 3.22), The Linux Kernel Archives, retrieved 23 September 2009.