SIGINT, SIGKILL, SIGTERM 신호 차이, 각종 신호 요약

6101 단어 Linux
SIGINT,SIGKILL,SIGTERM
세 가 지 는 모두 프로 세 스 실행 을 종료/중지 합 니 다. 그러나 약간 차이 가 있 습 니 다.
SIGINT
  • 생 성 방식: 키보드 Ctrl + C
  • 결과 가 발생 했 습 니 다. 현재 프론트 프로 세 스 와 그 가 있 는 프로 세 스 그룹의 모든 프로 세 스 에 SIGINT 신 호 를 보 낸 다음 에 이 프로 세 스 는 신호 처리 프로그램 을 실행 하고 종 료 됩 니 다.
  • SIGTERM
  • 생 성 방식: 모든 제어 문자 와 상 관 없 이 kill 함수 로 보 내기
  • 본질: shell> kill 불 가 - 9 시 pid.
  • 결과 가 발생 합 니 다. 현재 프로 세 스 는 신 호 를 받 을 수 있 으 며, 하위 프로 세 스 는 받 지 못 합 니 다. 현재 프로 세 스 kill (즉 받 은 SIGTERM 가 있 으 면 하위 프로 세 스 의 부모 프로 세 스 는 init, 즉 pid 가 1 인 프로 세 스 입 니 다.
  • SIGKILL 의 차이 점: SIGTERM 차단 되 고 무시 되 며 캡 처 할 수 있 습 니 다. 즉, 신호 처리 프로그램 을 진행 할 수 있 습 니 다. 그러면 프로 세 스 가 잘 종료 되 고 파일 을 정리 하고 닫 을 수 있 습 니 다.
  • SIGKILL
  • 생 성 방식: 모든 제어 문자 와 상 관 없 이 kill 함수 로 보 내기
  • 본질: shell> kill -9 pid 에 해당 한다.
  • 결과 가 발생 합 니 다. 현재 프로 세 스 는 이 신 호 를 받 았 습 니 다. 이 신 호 를 받 았 을 때 포착 되 지 않 습 니 다. 즉, 프로 세 스 가 신호 처리 프로그램 을 실행 할 수 없 으 면 기본 행동 을 직접 보 냅 니 다. 즉, 이 신 호 는 왜 kill -9 pid 프로그램 을 죽 일 수 있 는 지 주의 하 십시오. 따라서 프로 세 스 가 끝나 기 전에 자원 을 정리 하거나 닫 지 못 하 는 등 행동 을 하 는 것 도 좋 지 않 습 니 다.

  • 주의 하 다.SIGINT, SIGTERM 모두 포 획 될 수 있 습 니 다. 즉, 신호 처리 함 수 를 실행 할 수 있 기 때문에 신호 처리 함수 논리 에 따라 프로 세 스 가 종료 되 지 않 을 수 있 습 니 다. 즉, 반드시 종료 되 지 않 을 수 있 으 므 로 잘 처리 해 야 합 니 다 exit(0).
    총결산
  • SIGQUIT: POSIX 호 환 플랫폼 에서 SIGQUIT 는 사용자 가 프로 세 스 에 핵심 덤 프 를 요청 할 때 제어 단말기 에서 프로 세 스 로 보 내 는 신호 입 니 다. SIGQUIT 는 보통 Control -\로 유도 할 수 있 습 니 다. Linux 에서 도 Ctrl - 4 또는 가상 콘 솔 에서 SysRq 키 를 사용 할 수 있 습 니 다.
  • SIGTERM: SIGTERM 은 kill 또는 killall 명령 으로 프로 세 스에 보 내 는 기본 신호 입 니 다. 프로 세 스 가 종 료 될 수 있 지만 SIGKILL 신호 와 달리 프로 세 스 가 캡 처 하고 설명 할 수 있 습 니 다. (또는 무시)이. 따라서 SIGTERM 은 파일 을 정리 하고 닫 을 수 있 도록 프로 세 스 를 잘 종료 하 라 고 요구 하 는 것 과 유사 합 니 다. 이 때문에 닫 는 동안 많은 유 닉 스 시스템 에서 init 는 전원 을 끄 는 데 중요 하지 않 은 모든 프로 세 스에 SIGTERM 을 보 내 고 몇 초 를 기다 린 다음 SIGKILL 을 보 내 나머지 프로 세 스 를 강제로 종료 합 니 다.
  • SIGINT: POSIX 호 환 플랫폼 에서 SIGINT 는 사용자 가 프로 세 스 를 중단 하고 싶 을 때 제어 단말기 에서 프로 세 스에 보 내 는 신호 입 니 다. 프로 세 스 제어 단말기 의 사용자 가 실행 중인 프로 세 스 키 를 누 르 면 - 보통 Control - C 이지 만 일부 시스템 에 서 는 '삭제' 문자 나 '중단' 키 를 누 르 면 SIGINT 를 보 냅 니 다.
  • SIGKILL: POSIX 호 환 플랫폼 에서 SIGKILL 은 프로 세 스에 보 내 는 신호 로 즉시 종 료 됩 니 다. 프로그램 에 보 낼 때 SIGKILL 은 즉시 종 료 됩 니 다. SIGTERM 과 SIGINT 와 는 반대로 이 신 호 를 캡 처 하거나 무시 할 수 없습니다. 수신 과정 은 이 신 호 를 받 을 때 청 소 를 수행 할 수 없습니다.
  • 각종 신호 총화
    SIGHUP                    
    SIGINT                  
    SIGQUIT     CORE      ,    core  
    SIGILL     CORE             
    SIGTRAP     CORE             
    SIGBUS     CORE             
    SIGSEGV     CORE              
    SIGFPE     CORE             
    SIGIOT     CORE           I/O  
    SIGKILL                
    SIGPIPE                          
    SIGALARM                 
    SIGTERM                  
    SIGSTOP                     
    SIGTSTP                    
    SIGCONT                       
    SIGURG            I/O    
    SIGIO                      I/O
    SIGCHLD                           
    SIGTTOU                   
    SIGTTIN                   
    SIGXGPU            CPU    
    SIGXFSZ                  
    SIGWINCH                    
    SIGPROF                       
    SIGUSR1                  1
    SIGUSR2                  2
    SIGVTALRM                 
    
  • SIGHUP 이 신 호 는 사용자 단말기 연결 (정상 또는 비정 상) 이 끝 날 때 보 냅 니 다. 보통 터미널 의 제어 프로 세 스 가 끝 날 때 같은 session 내의 각 작업 을 알 립 니 다. 이때 제어 단말기 와 더 이상 연결 되 지 않 습 니 다.
  • SIGINT 프로그램 종료 (interrupt) 신 호 는 사용자 가 INTR 문자 (보통 Ctrl - C) 를 입력 할 때 보 냅 니 다
  • SIGQUIT 는 SIGINT 와 유사 하지만 QUIT 문자 (보통 Ctrl -) 로 제어 합 니 다. 프로 세 스 는 SIGQUIT 가 종료 되 었 을 때 core 파일 이 발생 합 니 다. 이 의미 에서 프로그램 오류 신호 와 유사 합 니 다.
  • SIGIL 은 불법 명령 을 실 행 했 습 니 다. 보통 실행 가능 한 파일 자체 에 오류 가 발생 하거나 데이터 세그먼트 를 실행 하려 고 하기 때 문 입 니 다. 스 택 이 넘 칠 때 도 이 신호 가 발생 할 수 있 습 니 다.
  • SIGTRAP 는 정지점 명령 이나 다른 trap 명령 으로 만들어 집 니 다. debugger 에서 사용 합 니 다.
  • SIGABRT 프로그램 이 스스로 오 류 를 발견 하고 abort 를 호출 할 때 발생 합 니 다.
  • SIGIOT 는 PDP - 11 에서 iot 명령 으로 만들어 지고 다른 기계 에 서 는 SIGABRT 와 같 습 니 다.
  • SIGBUS 불법 주소, 메모리 주소 정렬 (alignment) 오류 포함. eg: 네 글자 길이 의 정수 에 접근 하지만 주 소 는 4 배수 가 아 닙 니 다.
  • SIGFPE 는 치 명 적 인 산술 연산 오류 가 발생 했 을 때 보 냅 니 다. 부동 소수점 연산 오류 뿐만 아니 라 넘 침 및 나 누 기 0 등 다른 모든 산술 오류 도 포함 합 니 다.
  • SIGKILL 은 프로그램의 실행 을 즉시 끝 내 는 데 사 용 됩 니 다. 이 신 호 는 차단 되 거나 처리 되 거나 무시 할 수 없습니다.
  • SIGUSR 1 은 사용자 에 게 사용 하도록 남 겨 준다
  • SIGSEGV 는 자신 에 게 할당 되 지 않 은 메모리 에 접근 하거나 쓰기 권한 이 없 는 메모리 주소 로 데 이 터 를 쓰 려 고 합 니 다.
  • SIGUSR 2 는 사용자 에 게 사용 하도록 남 겨 준다
  • SIGPIPE Broken pipe
  • SIGALRM 시계 정시 신 호 는 실제 시간 이나 시계 시간 을 계산 합 니 다. alarm 함 수 는 이 신 호 를 사용 합 니 다.
  • SIGTERM 프로그램 종료 (terminate) 신 호 는 SIGKILL 과 달리 이 신 호 는 차단 되 고 처 리 될 수 있 습 니 다. 보통 프로그램 이 정상적으로 종료 되도록 요구 합 니 다. 셸 명령 kill 이 부족 하면 이 신 호 를 발생 시 킵 니 다.
  • SIGCHLD 하위 프로 세 스 가 끝 날 때 부모 프로 세 스 가 이 신 호 를 받 습 니 다.
  • SIGCONT 은 정지 (stopped) 프로 세 스 를 계속 실행 하도록 합 니 다. 이 신 호 는 차단 되 지 않 습 니 다. stopped 상태 에서 계속 실행 할 때 특정한 작업 을 수행 할 수 있 도록 handler 를 사용 할 수 있 습 니 다. 예 를 들 어 프롬프트
  • 를 다시 표시 합 니 다.
  • SIGSTOP 가 프로 세 스 의 실행 을 중단 합 니 다. terminate 와 interrupt 의 차이 점 을 주의 하 십시오. 이 프로 세 스 는 아직 끝나 지 않 았 습 니 다. 실행 을 중단 할 뿐 입 니 다. 이 신 호 는 차단 되 거나 처리 되 거나 무시 할 수 없습니다.
  • SIGTSTP 는 프로 세 스 의 실행 을 중단 하지만 이 신 호 는 처리 되 고 무시 할 수 있 습 니 다. 사용자 가 SUSP 문 자 를 입력 했 을 때 (보통 Ctrl - Z) 이 신 호 를 보 냅 니 다
  • SIGTIN 배경 작업 이 사용자 단말기 에서 데 이 터 를 읽 으 려 면 이 작업 의 모든 프로 세 스 가 SIGTIN 신 호 를 받 습 니 다. 부족 할 때 이 프로 세 스 는 실행 을 중단 합 니 다.
  • SIGTOU 는 SIGTTIN 과 유사 하지만 단말 기 를 쓸 때 받 습 니 다.
  • SIGURG 는 "긴급"데이터 나 out - of - band 데이터 가 socket 에 도 착 했 을 때 발생 합 니 다.
  • SIGXCPU 는 CPU 시간 자원 제한 을 초과 합 니 다. 이 제한 은 getrlimit/settrimit 에서 읽 거나 변경 할 수 있 습 니 다
  • SIGXFSZ 가 파일 크기 자원 제한 을 초과 합 니 다.
  • SIGVTALRM 가상 시계 신호 입 니 다. SIGALRM 과 유사 하지만 이 프로 세 스 가 사용 하 는 CPU 시간 을 계산 합 니 다.
  • SIGROF 는 SIGALRM/SIGVTALRM 과 유사 하지만 이 프로 세 스 가 사용 하 는 CPU 시간 과 시스템 호출 시간 을 포함 합 니 다.
  • SIGWINCH 창 크기 가 바 뀌 었 을 때 보 냅 니 다.
  • SIGIO 파일 설명자 가 준비 되 어 있 으 며 입 출력 작업 을 시작 할 수 있 습 니 다.
  • SIGPWR Power failure
  • 좋은 웹페이지 즐겨찾기