
ある端末で複数のプログラムを実行program &
し、SIGKILL
SIGINT
別の端末から信号を送信するか、別の信号を送信し始めた場合、どのプロセスが実行している端末からどのプロセスがどの信号を受け取ったかを教えてください。
答え1
端末はそのようなプロセスに送信された信号について知らないので、何も知らない。ただし、シェルにジョブ制御機能がある場合は、バックグラウンドジョブが終了するタイミング(シグナルなど)を通知できます。たとえば、bashとzshのnotify
場合は、次のプロンプトを待たずにそのレポートをすぐに受信できるようにオプションを設定する必要があります。
バックグラウンドジョブの終了時に実行されるSIGCHLDトラップを設定することもできます(ただし、このトラップを介して終了したジョブに関する情報を取得することはできません)。
wait $pid
POSIXシェルは特定のPIDの終了ステータスを取得するためにも使用できますが、$pid
これはプロセスの振る舞いによって偽の肯定と偽の否定になる可能性がある信号を提供しますが、いくつかの制限があります。よりwait
仕様より多くの情報を知りたいです。