여러 프로세스가 수신된 신호를 보고합니다.

여러 프로세스가 수신된 신호를 보고합니다.

한 터미널에서 여러 프로그램을 실행 program &한 다음 SIGKILL SIGINT다른 터미널에서 신호를 보내거나 다른 신호를 보내기 시작하면 모든 프로세스를 실행하는 터미널에서 어떤 프로세스가 어떤 신호를 받았는지 알려 주나요?

답변1

터미널은 그러한 프로세스로 전송된 신호에 대해 알지 못하므로 아무 것도 알려주지 않습니다. 그러나 쉘에 작업 제어 기능이 있는 경우 백그라운드 작업이 종료되는 시기(예: 신호로 인해)를 알려줄 수 있습니다. 예를 들어, bash 및 zsh의 notify경우 해당 보고서를 즉시 받을 수 있도록(다음 프롬프트를 기다리지 않고) 옵션을 설정해야 합니다 .

백그라운드 작업이 종료될 때 실행되는 SIGCHLD 트랩을 설정할 수도 있습니다(그러나 이 트랩을 통해 종료된 작업에 대한 정보를 얻을 수는 없습니다).

wait $pidPOSIX 셸에서는 특정 PID의 종료 상태를 가져오는 데 사용할 수도 있지만 $pid(이는 프로세스 동작에 따라 거짓 긍정 및 거짓 부정이 될 수 있는 신호를 제공합니다) 몇 가지 제한 사항이 있습니다. 보다wait사양더 많은 정보를 알고 싶습니다.

관련 정보