1

Linuxで実行されているプログラムは、いくつかの理由で終了する可能性があります。プログラムが必要な計算を終了して単に終了する(通常の終了)、コードが問題を検出して例外をスローする(早期終了)、そして最後にシステムが停止する可能性がありますプログラムがすべきでないこと(保護されたメモリへのアクセスなど)を実行しようとしたために実行された(クラッシュ)。

通常/早期終了とクラッシュを区別できる信頼性の高い一貫した方法はありますか?あれは、

% any_program
...time passes and prompt re-appears...
% (type something here that tells me if the program crashed)

たとえば、$?クラッシュとプログラム制御の終了を示す値はありますか?

4

1 に答える 1

2

bashのマニュアルページには次のように記載されています。

 The  return  value  of a simple command is its exit status, or 128+n if
 the command is terminated by signal n.

$?それぞれ139または134です:

$ any_program
$ if [ $? = 139 -o $? = 134 ]; then
>   echo "Crashed!"
> fi

少なくとも、$の場合は?が128より大きい場合、ユーザーがctrl-cを押してプログラムを強制終了した可能性があり、実際のクラッシュではない可能性がありますが、何か異常が発生したことを示しています。

于 2013-01-26T15:19:29.037 に答える