プロセスが終了すると、シェルは 8 ビットの戻りコードのみを格納しますが、プロセスが異常終了した場合は上位ビットを設定します。ただし、プロセスはセグメンテーション違反によって終了するため、通常、送信されるシグナルは SIGSEGV (無効なメモリ参照) で、値は 11 です。
プロセスが異常終了したため、128 になり、プロセスを終了させたシグナルの値である 11 を追加すると、139 になります。
関連する syscall (終了したプロセスのステータスを与える) は、waitpid(2) です。 139 は WIFSIGNALED
用です と WTERMSIG
etc... Linux では、実際のビットは内部ファイル /usr/include/bits/waitstatus.h
に記述されています <sys/wait.h>
から含まれています ヘッダー
wait
、 waitpid
call は POSIX の標準であり、マクロ名 (WTERMSIG
など) も標準です。 等...)。これらのマクロの実際の実装、および実際のシグナル番号、したがってシェルによって提供されるコードは、実装固有です。
signal(7) Linux man ページにシグナルの数が記載されています。