「出力リダイレクトに ProcessBuilder を使用する」
<p>次のコードを使用して、ProcessBuilder によって開始されたプロセスの出力をリダイレクトしようとしています。
<pre class="brush:php;toolbar:false;">ProcessBuilder pb = new ProcessBuilder("/myScript >> /myLogFile 2>&1 <& - &");
Map env = pb.environment();
env.clear();
env.put("var1", "val1");
env.put("var2", "val2");
pb.redirectErrorStream(true);
プロセス p = pb.start();
<p>しかし、例外がスローされて失敗しました: </p>
<ブロック引用>
<p>スレッド「メイン」で例外が発生しました
java.io.IOException: 実行できません
プログラム
"/myScript>>
/myLogFile
2>&1 <& - &": java.io.IOException:
エラー=2、そのようなファイルまたはディレクトリはありません
java.lang.ProcessBuilder.start(ProcessBuilder.java:460)</p>
</blockquote>
<p>「/myScript」を渡すだけで正常に動作します。 </p>
<p>スクリプトは perl ですが、失敗する理由について何か提案やコメントはありますか? </p>
<p><code>new ProcessBuilder("/myScript",">>","/myLogFile")</code> のような個別のパラメータとしてそれらを渡してみましたが、うまくいきましたが、にリダイレクトされませんログ ファイルも envVar も受け入れられません。 </p>