最後に実行中のアプリケーションが受信した信号を確認できますか?

最後に実行中のアプリケーションが受信した信号を確認できますか?

シェル(たとえば、Bash)で、最後に完了したアプリケーションが受信したシグナル番号(存在する場合)を印刷してプロセスの戻りコードを確認するのと同様の方法で検索できますか$?

ベストアンサー1

プロセスが終了すると、そのプロセスを終了した信号は、親プロセス(または子収穫機または孤児プロセス)によって取得された終了init状態にエンコードされます。

では 128+ bashsignum$?です。

これがほとんどのBourne様シェルが行うことです。 ksh93 は 256+signum を使用し、yash は 384+signum を使用します。

$?129どちらの状態にあるbashかは、プロセスがシグナル1(SIGHUP)によって終了または実行されたことを意味しますexit(129)。ただし、そうであれば、exit(129)プロセス終了がSIGHUPを通じて報告された可能性が高いです。

値から信号名を取得するには、次のように$?します。

kill -l "$?"

これは、128/256/384+ 表記を使用するかどうかに関係なく、すべての Bourne 様シェルに適用されます。

詳細については、次を参照してください。プロセスの終了時にデフォルトの終了コードは何ですか?

おすすめ記事