「出力リダイレクトに ProcessBuilder を使用する」
P粉517090748
P粉517090748 2023-08-24 20:26:08
0
2
440
<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粉517090748
P粉517090748

全員に返信(2)
P粉204079743

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

いいねを押す +0
P粉818088880

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!