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
했으므로 스크립트는 어쨌든 종료되었습니다).