セグメンテーション違反を起こしたプロセスが返すエラー コードは何ですか? 私の実験では「139」のように見えますが、なぜそうなのか、どの程度標準なのかを知りたいです。
質問する
14130 次
2 に答える
25
プロセスが終了すると、シェルは 8 ビットの戻りコードのみを格納しますが、プロセスが異常終了した場合は上位ビットを設定します。ただし、プロセスはセグメンテーション違反によって終了するため、通常、送信されるシグナルは SIGSEGV (無効なメモリ参照) で、値は 11 です。
したがって、プロセスが異常終了したため、128 があり、11 だったプロセスを終了したシグナルの値を追加すると、139 が得られます。
于 2013-01-30T08:45:03.840 に答える
11
関連する syscall (終了したプロセスのステータスを与える) は、waitpid(2)です。139はWIFSIGNALED
などWTERMSIG
です... Linuxでは、実際のビットはヘッダー/usr/include/bits/waitstatus.h
から含まれる内部ファイルに記述されています<sys/wait.h>
,呼び出しはPOSIX の標準でwait
あり、マクロ名 ( etc... など) も同様です。これらのマクロの実際の実装、および実際のシグナル番号、したがってシェルによって提供されるコードは、実装によって異なります。waitpid
WTERMSIG
signal(7) Linuxのman ページには、シグナルの数が記載されています。
于 2013-01-30T08:40:03.047 に答える