UNIX 신호 기본 개념
5778 단어 unix
신 호 를 이해 하기 위해 서 는 우리 가 가장 잘 아 는 장면 부터 말한다.
SIGINT
신호 로 해석 하여 이 프로 세 스 의 PCB 에 기록 합 니 다 SIGINT
신 호 를 프로 세 스에 보 냈 다 고 할 수 있 습 니 다).SIGINT
신호 가 처리 되 어야 하 는 것 을 발 견 했 습 니 다. 이 신호 의 기본 처리 동작 은 프로 세 스 를 종료 하 는 것 이기 때문에 사용자 공간 코드 로 돌아 가지 않 고 프로 세 스 를 직접 종료 합 니 다.Ctrl - C 에서 발생 하 는 신 호 는 프론트 프로 세 스에 만 보 낼 수 있 습 니 다.셸 은 프로 세 스 가 끝 날 때 까지 기다 리 지 않 고 새로운 명령 을 받 아들 여 프로 세 스 를 시작 할 수 있 는 명령 뒤에
&
을 추가 하 는 것 을 보 았 습 니 다.Shell 은 프론트 프로 세 스 와 여러 백 엔 드 프로 세 스 를 동시에 실행 할 수 있 으 며, 프론트 프로 세 스 만 이 Ctrl - C 와 같은 제어 키 에서 발생 하 는 신 호 를 받 을 수 있 습 니 다.프론트 프로 세 스 가 실행 되 는 과정 에서 사용 자 는 언제든지 Ctrl - C 를 누 르 면 신 호 를 보 낼 수 있 습 니 다. 즉, 이 프로 세 스 의 사용자 공간 코드 가 어느 곳 에서 든 지 SIGINT
신 호 를 받 아 종 료 될 수 있 기 때문에 신 호 는 프로 세 스 의 제어 프로 세 스에 비해 비동기 (Asynchronous) 입 니 다.kill -l
명령 으로 시스템 이 정의 한 신호 목록 을 볼 수 있 습 니 다.$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
...
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
모든 신 호 는 하나의 번호 와 하나의 매크로 정의 이름 이 있 습 니 다. 이 매크로 정 의 는
signal.h
에서 찾 을 수 있 습 니 다. 예 를 들 어 정의 #define SIGINT 2
가 있 습 니 다.Signal Value Action Comment
-------------------------------------------------------------------------
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
...
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
위의 표 에서 첫 번 째 열 은 각 신호 의 매크로 정의 이름 이 고 두 번 째 열 은 각 신호 의 번호 입 니 다. 세 번 째 열 은 기본 처리 동작 입 니 다.
Term
현재 프로 세 스 를 종료 하 는 것 을 표시 합 니 다. Core
현재 프로 세 스 를 종료 하 는 것 을 표시 하고 코어 덤 프 (다음 절 은 코어 덤 프 가 무엇 인지 상세 하 게 소개 합 니 다) Ign
는 이 신 호 를 무시 합 니 다. Stop
현재 프로 세 스 를 중단 하 는 것 을 표시 합 니 다. Cont
이전에 정 지 된 프로 세 스 를 계속 실행 하 는 것 을 표시 합 니 다. 표 의 마지막 열 은 어떤 조건 에서 이 신 호 를 발생 시 키 는 지 설명 하 는 것 입 니 다.신호 가 발생 하 는 조건 은 주로 다음 과 같다.
SIGINT
신 호 를 보 내 고 Ctrl -\는 SIGQUIT
신 호 를 보 내 며 Ctrl - Z 는 SIGTSTP
신 호 를 보 냅 니 다.SIGFPE
신호 로 프로 세 스에 보 냅 니 다.예 를 들 어 현재 프로 세 스 가 불법 메모리 주 소 를 방문 하면 MMU 에 이상 이 생 길 수 있 습 니 다. 커 널 은 이 이상 을 SIGSEGV
신호 로 프로 세 스에 보 냅 니 다.kill(2)
함수 가 다른 프로 세 스에 신 호 를 보 낼 수 있 습 니 다.kill(1)
명령 도 호출 kill(1)
함수 로 이 루어 집 니 다. 신 호 를 명확 하 게 지정 하지 않 으 면 kill(2)
신 호 를 보 냅 니 다. 이 신호 의 기본 처리 동작 은 프로 세 스 를 종료 하 는 것 입 니 다.SIGTERM
신호 가 발생 하고 읽 기 단 이 닫 힌 파이프 에 데 이 터 를 쓸 때 SIGALRM
신호 가 발생 한다.기본 동작 으로 신 호 를 처리 하지 않 으 려 면 사용자 프로그램 이 호출
SIGPIPE
함수 로 커 널 에 특정한 신 호 를 어떻게 처리 하 는 지 알려 줄 수 있 습 니 다 sigaction(2)
함수 가 잠시 후에 상세 하 게 소개 합 니 다). 선택 할 수 있 는 처리 동작 은 다음 과 같은 세 가지 가 있 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LINUX 시리즈(1부)UNIX는 1969년 AT&T에서 개발한 운영 체제입니다. UNIX는 다중 사용자, 다중 프로세스 운영 체제입니다. 기본적으로 사용 가능한 두 가지 기본 UNIX 버전이 있습니다. 대부분의 UNIX 버전은 이러한 버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.