GNU/Linux >> Linux の 問題 >  >> Linux

セグメンテーション違反を起こしたプロセスが返すエラー コードは何ですか?

プロセスが終了すると、シェルは 8 ビットの戻りコードのみを格納しますが、プロセスが異常終了した場合は上位ビットを設定します。ただし、プロセスはセグメンテーション違反によって終了するため、通常、送信されるシグナルは SIGSEGV (無効なメモリ参照) で、値は 11 です。

プロセスが異常終了したため、128 になり、プロセスを終了させたシグナルの値である 11 を追加すると、139 になります。


関連する syscall (終了したプロセスのステータスを与える) は、waitpid(2) です。 139 は WIFSIGNALED 用です と WTERMSIG etc... Linux では、実際のビットは内部ファイル /usr/include/bits/waitstatus.h に記述されています <sys/wait.h> から含まれています ヘッダー

waitwaitpid call は POSIX の標準であり、マクロ名 (WTERMSIG など) も標準です。 等...)。これらのマクロの実際の実装、および実際のシグナル番号、したがってシェルによって提供されるコードは、実装固有です。

signal(7) Linux man ページにシグナルの数が記載されています。


Linux
  1. Psの出力にはどういう意味がありますか?

  2. エコー$は何ですか?行う??

  3. 「e:サブプロセス/ usr / bin / dpkgがエラーコード(1)を返しました」これはどういう意味ですか?

  1. Ls -al。*コマンドは何を返しますか?

  2. malloc(0) は何を返しますか?

  3. pthread_exit と return

  1. Linux カーネルがプリエンプティブであるとはどういう意味ですか?

  2. Linuxにはどのようなプロセスキラーがありますか?

  3. プロセスは所有者を持つことができますか?どういう意味ですか?