신호 의 기본 개념
Ctrl - C 에서 발생 하 는 신 호 는 프론트 프로 세 스에 만 보 낼 수 있 습 니 다."wait 와 waitpid 함수"에서 우 리 는 하나의 명령 뒤에 & 를 추가 하여 배경 에서 실행 할 수 있 는 것 을 보 았 습 니 다. 그러면 Shell 은 프로 세 스 가 끝 날 때 까지 기다 리 지 않 고 새로운 명령 을 받 아들 여 새로운 프로 세 스 를 시작 할 수 있 습 니 다.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
...
모든 신 호 는 하나의 번호 와 하나의 매크로 정의 이름 이 있 습 니 다. 이 매크로 정 의 는 signal. h 에서 찾 을 수 있 습 니 다. 예 를 들 어 정의\# define SIGINT 2 가 있 습 니 다.번호 34 이상 은 실시 간 신호 로 이 장 에 서 는 번호 34 이하 의 신호 만 논의 하고 실시 간 신 호 는 논의 하지 않 는 다.이 신호 들 은 각각 어떤 조건 에서 발생 하 는 지, 기본 적 인 처리 동작 이 무엇 인지, signal (7) 에서 상세 하 게 설명 되 어 있다.
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
...
위의 표 에서 첫 번 째 열 은 각 신호 의 매크로 정의 이름 이 고 두 번 째 열 은 각 신호 의 번호 이 며 세 번 째 열 은 기본 처리 동작 입 니 다표 의 마지막 열 은 어떤 조건 에서 이 신 호 를 발생 시 키 는 지 간략하게 소개 하 는 것 이다.
신호 가 발생 하 는 조건 은 주로 다음 과 같다.
기본 동작 으로 신 호 를 처리 하지 않 으 려 면 사용자 프로그램 은 sigaction (2) 함 수 를 호출 하여 커 널 에 특정한 신 호 를 어떻게 처리 하 는 지 알려 줄 수 있 습 니 다 (sigaction 함수 가 잠시 후에 상세 하 게 소개 합 니 다). 선택 할 수 있 는 처리 동작 은 다음 과 같은 세 가지 가 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.