統合テストから、Windows (WindowsXP 32 ビット) で外部プロセスを強制終了する必要があります。「taskkill.exe」を使用するだけだと思っていましたが、機能していないようです。基本的に、Java から「taskkill.exe」プロセスを開始するたびに、終了値 -1073741515 が返され、std エラー/出力には何も出力されません。
問題を再現するために、次の簡単なアプリケーションを作成しました。
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder();
//In my real code, I kill process by its pid. However below also shows the problem:
builder.command("taskkill.exe", "/?");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = r.readLine();
System.out.println("out:");
while(line != null) {
System.out.println(line);
line = r.readLine();
}
System.out.println(p.waitFor());
}
その他のデータ ポイント:
- -1073741515 は明らかに「アプリケーションを正しく初期化できませんでした」という意味です。私にとってはあまり役に立ちませんが;)
- taskkill.exe パラメータの組み合わせをたくさん試しました。コマンドの前に「cmd」、「/c」を付けてみました。症状は全く同じ
- windows\system32 の下にある他の Windows プログラムを実行しようとしましたが、-10737 も表示されます...
- 「dir」や「echo」などを実行しても問題ありません。
何が問題なのかについてのヒントはありますか?