我正在尝试使用以下代码重定向通过ProcessBuilder启动的进程的输出:
我正在尝试使用以下代码重定向通过ProcessBuilder启动的进程的输出:
ProcessBuilder pb = new ProcessBuilder("/myScript >> /myLogFile 2>&1 <& - &");
Map<String, String> env = pb.environment();
env.clear();
env.put("var1", "val1");
env.put("var2", "val2");
pb.redirectErrorStream(true);
Process p = pb.start();
但是它出现了异常
Exception in thread "main" java.io.IOException: 无法运行程序 "/myScript >> /myLogFile 2>&1 <& - &": java.io.IOException: 错误=2,没有那个文件或目录 at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
当我仅传递“/myScript”时,它可以正常工作。
脚本是perl,对于为什么会失败有什么建议/注释?
我尝试将所有参数分开传递,例如new ProcessBuilder("/myScript",">>","/myLogFile")
,它执行了,但它不会重定向到日志文件,也不会接受envVars。