Rumah  >  Soal Jawab  >  teks badan

"Menggunakan ProcessBuilder untuk pengalihan keluaran"

<p>Saya cuba mengubah hala keluaran proses yang dimulakan oleh ProcessBuilder menggunakan kod berikut: </p> <pre class="brush:php;toolbar:false;">ProcessBuilder pb = new ProcessBuilder("/myScript >> /myLogFile 2>&1 <& - &"); Peta<String, String> env = pb.environment(); env.clear(); env.put("var1", "val1"); env.put("var2", "val2"); pb.redirectErrorStream(true); Proses p = pb.start();</pre> <p>Tetapi ia gagal, melontar pengecualian: </p> <blockquote> <p>Pengecualian dalam urutan "utama" java.io.IOException: Tidak boleh dijalankan program "/myScript>> /myLogFile 2>&1 <& - &": java.io.IOException: ralat=2, Tiada fail atau direktori sedemikian di java.lang.ProcessBuilder.start(ProcessBuilder.java:460)</p> </blockquote> <p>Apabila saya hanya lulus "/myScript" ia berfungsi dengan baik. </p> <p>Skrip adalah perl, sebarang cadangan/komen tentang mengapa ia gagal? </p> <p>Saya cuba menghantarnya sebagai parameter berasingan seperti <code>new ProcessBuilder("/myScript",">>","/myLogFile")</code> fail log, dan envVars juga tidak akan diterima. </p>
P粉517090748P粉517090748422 hari yang lalu426

membalas semua(2)saya akan balas

  • P粉204079743

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

    Mengikut keperluan anda, bermula dari Java7 anda boleh terus menggunakan ProcessBuilder, hanya lulus fail boleh laku sebagai parameter dan gunakan redirectInput()redirectOutput()redirectError() dalam kelas ProcessBuilder untuk mengubah hala/memintas aliran keluarannya.

    balas
    0
  • P粉818088880

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

    Pengendali ubah hala Shell berada dalam ProcessBuilder中是未知的。将您的命令放在一个shell脚本中并执行它,如这里所示。或者,使用bash -c, seperti yang ditunjukkan di sini.

    balas
    0
  • Batalbalas