
シェル(たとえば、Bash)で、最後に完了したアプリケーションが受信したシグナル番号(存在する場合)を印刷してプロセスの戻りコードを確認するのと同様の方法で検索できますか$?
?
答え1
プロセスが終了すると、そのプロセスを終了した信号は、親プロセス(または子収穫機または孤児プロセス)によって取得された終了init
状態にエンコードされます。
では 128+ bash
signum$?
です。
これがほとんどのBourne様シェルが行うことです。 ksh93 は 256+signum を使用し、yash は 384+signum を使用します。
$?
129
どちらの状態にあるbash
かは、プロセスがシグナル1(SIGHUP)によって終了または実行されたことを意味しますexit(129)
。ただし、そうであれば、exit(129)
プロセス終了がSIGHUPを通じて報告された可能性が高いです。
値から信号名を取得するには、次のように$?
します。
kill -l "$?"
これは、128/256/384+ 表記を使用するかどうかに関係なく、すべての Bourne 様シェルに適用されます。
詳細については、次を参照してください。プロセスの終了時にデフォルトの終了コードは何ですか?