Skip to main content

신호 - Linux / Unix 명령

[홀인원 1.07.04] Unix의 주요 명령어 (유월 2025)

[홀인원 1.07.04] Unix의 주요 명령어 (유월 2025)
Anonim

Linux는 POSIX의 신뢰할 수있는 신호 (이하 "표준 신호")와 POSIX 실시간 신호를 모두 지원합니다.

표준 신호

Linux는 아래 나열된 표준 신호를 지원합니다. "신호"열에 표시된 것처럼 여러 신호 번호는 아키텍처에 따라 다릅니다. (세 개의 값이 주어지면 첫 번째 것은 보통 alpha와 sparc에 유효하고, 중간 값은 i386, ppc와 sh, 그리고 마지막 값은 mips에 유효합니다.

A -는 해당 아키텍처에서 신호가 없음을 나타냅니다.

테이블의 "동작"열에있는 항목은 다음과 같이 신호의 기본 동작을 지정합니다.

기간

기본 조치는 프로세스를 종료하는 것입니다.

Ign

기본 동작은 신호를 무시하는 것입니다.

핵심

기본 동작은 프로세스를 종료하고 코어를 덤프하는 것입니다.

중지

기본 조치는 프로세스를 중지하는 것입니다.

먼저 원래의 POSIX.1 표준에 설명 된 신호.

신호동작논평
또는 통제 과정의 죽음
SIGINT2기간키보드에서 인터럽트
SIGQUIT3핵심키보드에서 종료하십시오.
싸움4핵심불법 지시
SIGABRT6핵심신호를 중단합니다. 중단하다 (3)
SIGFPE8핵심부동 소수점 예외
알래스카9기간신호를 죽인다.
SIGSEGV11핵심유효하지 않은 메모리 참조
입식13기간브로큰 파이프 : 독자가없는 파이프에 쓰기
SIGALRM14기간타이머 신호 경보 (2)
시걸15기간종단 신호
SIGUSR130,10,16기간사용자 정의 신호 1
SIGUSR231,12,17기간사용자 정의 신호 2
SIGCHLD20,17,18Ign아동이 중지되거나 종료 됨
시그널19,18,25 중지 된 경우 계속하십시오.
SIGSTOP17,19,23중지프로세스 중지
SIGTSTP18,20,24중지tty에 중지 입력
소식통21,21,26중지백그라운드 프로세스에 대한 tty 입력
시그이트22,22,27중지백그라운드 프로세스 용 tty 출력

신호들알래스카SIGSTOP 붙잡거나, 막거나, 무시할 수 없습니다.

다음은 POSIX.1 표준에는 없지만 SUSv2 및 SUSv3 / POSIX 1003.1-2001에 설명 된 신호입니다.

신호동작논평
SIGPOLL 기간Pollable 이벤트 (Sys V). SIGIO의 동의어
SIGPROF27,27,29기간프로파일 링 타이머가 만료되었습니다.
SIGSYS12,-,12핵심루틴에 대한 잘못된 인수 (SVID)
소식5핵심추적 / 중단 점 트랩
시구르16,23,21Ign소켓의 긴급 상태 (4.2 BSD)
SIGVTALRM26,26,28기간가상 알람 시계 (4.2 BSD)
SIGXCPU24,24,30핵심CPU 시간 제한 초과 (4.2 BSD)
SIGXFSZ25,25,31핵심파일 크기 제한 초과 (4.2 BSD)

최대 Linux 2.2를 포함하여,SIGSYS, SIGXCPU, SIGXFSZ, (SPARC 및 MIPS 이외의 아키텍처에서)SIGBUS 코어 덤프 (core dump)없이 프로세스를 종료하는 것이었다. (다른 Unices에서는SIGXCPUSIGXFSZ 코어 덤프없이 프로세스를 종료하는 것입니다.) Linux 2.4는 이러한 신호에 대한 POSIX 1003.1-2001 요구 사항을 준수하여 코어 덤프로 프로세스를 종료합니다.

다음 여러 가지 다른 신호.

신호동작논평
시음7,-,7기간
시끄러운 소리-,16,-기간코 프로세서에서 스택 오류 (사용되지 않음)
SIGIO23,29,22기간I / O 가능 (4.2 BSD)
SIGCLD-,-,18IgnSIGCHLD의 동의어
SIGPWR29,30,19기간정전 (시스템 V)
SIGINFO29,-,- SIGPWR의 동의어
시그 (SIGLOST)-,-,-기간파일 잠금이 손실되었습니다.
SIGWINCH28,28,20Ign창 크기 조정 신호 (4.3 BSD, Sun)
시끄러운-,31,-기간사용하지 않은 신호 (SIGSYS가됩니다)

(신호 29는SIGINFO / SIGPWR 알파에 있지만시그 (SIGLOST) sparc에.)

시음 POSIX 1003.1-2001에 명시되어 있지 않지만, 대부분의 다른 유닉스에는 그렇지 않다. 디폴트 동작은 일반적으로 코어 덤프로 프로세스를 종료하는 것이다.

SIGPWR (POSIX 1003.1-2001에 명시되지 않음)은 일반적으로 나타나는 다른 Unices에서는 기본적으로 무시됩니다.

SIGIO (POSIX 1003.1-2001에 명시되어 있지 않음)은 다른 여러 Units에서는 기본적으로 무시됩니다.

실시간 신호

리눅스는 원래 POSIX.4 실시간 확장 (POSIX 1003.1-2001에 포함됨)에 정의 된대로 실시간 신호를 지원합니다. Linux는 32 개의 실시간 신호를 지원하며 32 (SIGRTMIN) ~ 63 (SIGRTMAX). (프로그램은 항상 표기법을 사용하여 실시간 신호를 참조해야합니다SIGRTMIN+ n, 실시간 신호 번호의 범위는 Unix에 따라 다릅니다.)

표준 신호와 달리 실시간 신호에는 미리 정의 된 의미가 없습니다. 즉, 실시간 신호 집합 전체를 응용 프로그램 정의 목적으로 사용할 수 있습니다. (그러나 LinuxThreads 구현은 처음 세 개의 실시간 신호를 사용합니다.)

처리되지 않은 실시간 신호의 기본 동작은 수신 프로세스를 종료하는 것입니다.

실시간 신호는 다음과 같이 구별됩니다.

  1. 실시간 신호의 여러 인스턴스를 대기시킬 수 있습니다. 대조적으로 표준 신호의 여러 인스턴스가 전달되는 동안 해당 신호가 현재 차단 된 경우 하나의 인스턴스 만 대기합니다.
  2. 신호가시그 이그(2)에서, 동반 값 (정수 또는 포인터)이 신호와 함께 전송 될 수 있습니다. 수신 프로세스가이 신호에 대한 핸들러를SA_SIGACTION 깃발sigaction(2) 다음을 통해이 데이터를 얻을 수 있습니다. si_value 필드 siginfo_t 구조체를 두 번째 인수로 처리기에 전달합니다. 또한, si_pid 과 si_uid 이 구조의 필드는 신호를 보내는 프로세스의 PID 및 실제 사용자 ID를 얻는 데 사용할 수 있습니다.
  3. 실시간 신호는 보장 된 순서로 전달됩니다. 동일한 유형의 여러 실시간 신호는 전송 된 순서대로 전달됩니다. 다른 실시간 신호가 프로세스로 보내지면 가장 낮은 번호의 신호로 시작하여 전달됩니다. (즉, 번호가 낮은 신호는 우선 순위가 가장 높습니다.)

프로세스에 대해 표준 신호와 실시간 신호가 모두 보류중인 경우 POSIX는 먼저 전달 된 신호를 지정하지 않은 상태로 둡니다. Linux는 다른 많은 구현과 마찬가지로이 경우 표준 신호에 우선 순위를 부여합니다.

POSIX에 따르면 구현시 적어도 _POSIX_SIGQUEUE_MAX (32) 개의 실시간 신호가 프로세스에 대기 할 수 있어야합니다. 그러나 프로세스 당 제한을 두지 않고 Linux는 모든 프로세스에 대해 대기중인 실시간 신호 수에 대해 시스템 전체 제한을 부과합니다.

이 한도는 (그리고 특권과 함께) / proc / sys / kernel / rtsig-max 파일. 관련 파일, / proc / sys / kernel / rtsig-max , 얼마나 많은 실시간 신호가 현재 대기 중인지 알아내는 데 사용할 수 있습니다.

준거법

POSIX.1

중대한: 사용 남자 명령 ( % man )를 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지 확인하십시오.