마지막으로 실행 중인 애플리케이션이 수신한 신호를 확인할 수 있습니까?

마지막으로 실행 중인 애플리케이션이 수신한 신호를 확인할 수 있습니까?

쉘(예: Bash)에서 가장 최근에 완료된 애플리케이션이 수신한 신호 번호(있는 경우)를 인쇄하여 프로세스의 반환 코드를 확인하는 것과 유사한 방식으로 검색할 수 있습니까 $??

답변1

프로세스가 종료되면 해당 프로세스를 종료한 신호는 상위 프로세스(또는 하위 수확기 또는 고아 프로세스) init가 검색한 종료 상태로 인코딩됩니다.

에서는 128+ bashsignum $?입니다.

이것이 대부분의 Bourne 유사 쉘이 수행하는 작업입니다. ksh93은 256+signum을 사용하고 yash는 384+signum을 사용합니다.

$?129두 상태 중 하나 에 있다는 bash것은 프로세스가 신호 1(SIGHUP)에 의해 종료되었거나 실행되었음을 의미합니다 exit(129). 그러나 만약 그렇다면 exit(129)프로세스 종료가 SIGHUP을 통해 보고되었을 가능성이 높습니다.

값에서 신호 이름을 얻으려면 다음을 $?실행하십시오.

kill -l "$?"

이는 128/256/384+ 표기법 사용 여부에 관계없이 모든 Bourne 유사 쉘에 적용됩니다.

자세한 내용은 다음을 참조하세요.프로세스 종료 시 기본 종료 코드는 무엇입니까?

관련 정보