ホームページ  >  記事  >  Java  >  Java のランタイム Exec() メソッドが出力をリダイレクトしないのはなぜですか?

Java のランタイム Exec() メソッドが出力をリダイレクトしないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 08:34:29711ブラウズ

Why is Java's Runtime Exec() Method Not Redirecting Output?

Java の Runtime Exec() メソッドが出力をリダイレクトしない

Runtime.getRuntime() で実行されたスクリプトの出力をリダイレクトしようとしたとき。 exec() を実行すると、リダイレクトが効果がなく、出力ファイルが生成されないという問題が発生する可能性があります。

この問題を解決するには、リダイレクトに ProcessBuilder を使用する必要があります。次のコード スニペットは、正しいアプローチを示しています。

<code class="java">ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException</code>

このアプローチでは、スクリプトからの標準出力とエラー出力の両方が指定されたファイルにリダイレクトされ、スクリプトの出力が正常にキャプチャされることが保証されます。

以上がJava のランタイム Exec() メソッドが出力をリダイレクトしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。