나는 신호에 대한 완전한 정보를 알고 싶습니다 . 예를 들어 신호가 처리될 수 있는지 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
sum 을 제외한 유효한 신호일 수 있는 신호를 지정합니다SIGSTOP
.
그리고signal(7)
:
이러한 신호는 포착, 차단 또는 무시될
SIGKILL
수 없습니다 .SIGSTOP
그러나 실제 오류(잘못된 메모리 액세스, 잘못된 명령)의 신호를 무시하면 프로세스가 매우 안정적인 상태로 유지되지 않을 수 있습니다.