Process
でProcessBuilder
を使用して、Cコードで実行可能な実行ファイルを実行しています。私はProcess.exitValue()
にこの出口値に反応することをキャッチしています。私はすべての終了値が実行可能ファイルからではないことに気づいた。たとえば、終了値139があり、Cコードのどこにも139の終了値が返されていません。Java Process.exitValue()の値の意味は何ですか?
終了値の概要を調べようとしていますが、これを見つけることができませんでした。出口値をOSに依存させることができます。 (私は途中でUbuntuを使用しています)。
すべてが正しく行けば、必ず0の出口値があるようです。 終了値についての仕様はありますか?特定の範囲を自分のプログラムにしか使用できないことを確認できますか?どの終了コードがOS用に予約されていますか。
Cコードで139がおそらくメモリエラーであることがわかりました。おそらく私はそのことを取り除きたい。
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
注:UbuntuのシェルでCの実行可能ファイルを実行している私は、これは仕方によって単純化されたコードである終了値のいずれかの概要(例:139 = .....)
を取得することはできませんエラーを一切出さない(すなわち、終了値0)。システムは、それが128 + SIGNALに終了コードを設定します(セグメンテーションフォールトの場合のように)あなたのアプリケーションを殺す場合でも、Javaで同じコマンドを実行すると、終了値に139
139が_Segmentation fault_です。 _c-app_がアクセスしてはならないメモリにアクセスしていることを意味します。 – npe
[This](http://stackoverflow.com/a/4842719/828625)私は信じるあなたの質問に答えます。 –
[this](http://tldp.org/LDP/abs/html/exitcodes.html)も見つかりましたが、あなたにとってどれだけ重要なのか分かりません。 –