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

回到顶部