検索

ホームページ  >  に質問  >  本文

「出力リダイレクトに 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>
P粉517090748P粉517090748482日前459

全員に返信(2)返信します

  • P粉204079743

    P粉2040797432023-08-25 10:53:05

    要件に従って、Java7 以降、引き続き ProcessBuilder を使用できます。実行可能ファイルをパラメータとして渡し、ProcessBuilder クラスで redirectInput()redirectOutput()# を使用するだけです # # および redirectError() を使用して、出力ストリームをリダイレクト/インターセプトします。

    返事
    0
  • P粉818088880

    P粉8180888802023-08-25 10:07:03

    Shell リダイレクト演算子は ProcessBuilder では不明です。コマンドをシェル スクリプトに記述し、ここに示すように実行します。あるいは、ここに示すように bash -c を使用します。

    返事
    0
  • キャンセル返事