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();
但是它以失败告终
线程“主”中的异常java.io.IOException:无法运行程序“ / myScript >> / myLogFile 2>&1
<&-&”:java.io.IOException:error =
2,java.lang中没有此类文件或目录.ProcessBuilder.start(ProcessBuilder.java:460)
当我只是通过“ / myScript”时,它工作正常
脚本是perl,关于失败的任何建议/评论?
我尝试将所有参数作为单独的参数传递,例如new
ProcessBuilder("/myScript",">>","/myLogFile"),它会执行,但不会重定向到日志文件,也不会占用envVars。
回答:
Shell重定向运算符对未知ProcessBuilder
。把你的命令在shell脚本并执行它。另外,使用bash
-c,如图所示这里。
以上是 ProcessBuilder重定向输出 的全部内容, 来源链接: utcz.com/qa/415923.html