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
スクリプトはとにかく終了します。)