나는 신호에 대한 전체 정보를 알고 싶습니다 . 예를 들어 신호를 처리할 수 있는지 여부를 SIGTTIN
알고 싶습니다 .SIGTTIN
이것선적 서류 비치신호 에 대해서만 다음과 같이 말합니다 SIGTTIN
.
SIGTTIN 21,21,26 백그라운드 프로세스에 대한 터미널 입력 중지
그리고 man SIGTTIN
터미널에 입력해도 아무 것도 반환되지 않았습니다.
편집하다:
내가 의미하는 것은 프로세스에 보낼 수 있는 신호가 아니라 신호를 수신하는 프로세스가 신호의 기본 동작을 변경할 수 있는지 여부입니다. 예를 들어, 신호의 기본 동작은 SIGTTIN
프로세스를 중지하는 것입니다. 함수를 사용하여 프로그램에서 이 기본 동작을 변경할 수 있습니다 sigaction()
. 이제 일부 신호는 기본 동작을 변경하는 것을 허용하지 않으며 이것이 내가 찾고 있는 것입니다(기본 동작을 변경하는 것을 허용하지 않는 신호에 대한 문서).
답변1
일반적으로 올바른 이 명령을 사용할 수 있습니다.
kill -l | egrep SIGTTIN
SIGTTIN을 트랩한 다음 백그라운드에서 실행하고 SIGTTIN 핸들러가 실행되면 간단한 진단 메시지를 출력하는 빠른 PERL 스크립트를 작성할 수도 있습니다.
답변2
신호를 완전히 무시하거나 신호 처리기를 설치하는 것 이상으로 신호의 기본 동작을 변경할 수 없다고 생각합니다.sigaction(2)
말한다:
sa_handlersignum과 연관될 작업을 지정하며
SIG_DFL
기본 작업,SIG_IGN
이 신호를 무시하는 작업 또는 신호 처리 기능에 대한 포인터일 수 있습니다. 이 함수는 신호 번호를 유일한 인수로 받습니다.
일부 신호의 동작을 다른 기본 동작 중 하나로 변경하려면 원하는 작업(코어 덤프를 얻거나 프로세스를 중지하기 위해)을 수행하는 다른 신호를 발생시키거나 일반 종료(프로세스를 종료하기 위해) ).
SIGKILL
SIGSTOP
포착하거나 차단할 수 없는 두 가지 신호입니다 . sigaction(2)
:
시그넘신호를 지정하며 및
SIGKILL
를 제외한 모든 유효한 신호일 수 있습니다SIGSTOP
.
그리고signal(7)
:
신호는
SIGKILL
포착SIGSTOP
, 차단 또는 무시될 수 없습니다.
그러나 실제 오류(잘못된 메모리 액세스, 잘못된 명령)에서 발생한 신호를 무시하면 프로세스가 매우 안정적인 상태로 유지되지 않을 수 있습니다.