프로세스를 실행하고 실행 중에 신호를 보내려면 어떻게 해야 합니까?

프로세스를 실행하고 실행 중에 신호를 보내려면 어떻게 해야 합니까?

xyz 프로그램을 실행해야 합니다. 몇 초 안에 실행이 완료됩니다. 테스트해야 할 신호 처리 기능이 있습니다. 쉘이나 bash 스크립트에서 어떻게 이 프로그램을 실행하고 kill -14.

현재 내가 시도하는 명령은 다음과 같습니다

/usr/local/xyz input > some_file 2>&1 & PIDOS=$! && kill -14 $PIDOS

트리거되는 신호 처리가 없는 것 같습니다.

답변1

명령이 괜찮아 보입니다. 그런데 막상 해보니 명령이 너무 빠른 것 같습니다. 내 테스트 스크립트가 실행되기 전에 신호 처리기를 설치할 시간이 없는 것과 같습니다.

테스트 스크립트:

$ echo '$SIG{USR1} = sub { print "GOT SIGNAL\n" }; sleep 100' >  sigtest.pl

즉시 촬영: ( 다음 프롬프트가 즉시 인쇄되지 않도록 거기에서 자십시오.)

$ perl sigtest.pl & kill -USR1 $! ; sleep 1
[1] 8825
[1]+  User defined signal 1   perl sigtest.pl

아무것도 인쇄하지 않지만 신호와 함께 사라집니다. 잠시 시간을 내어 보겠습니다.

perl sigtest.pl & ( sleep 0.5 ; kill -USR1 $! )
[1] 8827
GOT SIGNAL
[1]+  Done                    perl sigtest.pl

이제 작동하고 신호 처리기가 트리거됩니다. (신호가 중단되었으므로 sleep스크립트는 어쨌든 종료됩니다.)

관련 정보