私はProcess
viaProcessBuilder
を使用してCコードで作成された実行可能ファイルを実行しています。私はProcess.exitValue()
この出口値に反応するためにを捕まえています。すべての終了値が実行可能ファイルからのものではないことに気づきました。たとえば、139の終了値を取得しましたが、Cコードのどこにも139の終了値を返していません。
出口値の概要を見つけようとしていますが、これが見つかりません。出口値がOSに依存する可能性があることがわかりました。(ちなみに私はUbuntuを使用しています)。
すべてが順調に進んだときに確認できる唯一の終了値は0のようです。出口値に関する仕様はありますか?特定の範囲が自分のプログラムにのみ使用できることを確認できますか?OS用に予約されている終了コード。
139はおそらくCコードのメモリエラーであることがわかりました。たぶん取り除きたいです。終了値の概要を取得できません(例:139 = .....)
ちなみに、これは簡略化されたコードです。
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
注:UbuntuシェルでC実行可能ファイルを実行しても、エラーはまったく発生しません(つまり、終了値0)。ただし、Javaで同じコマンドを実行すると、終了値139が得られます。