主要目的是通过java代码设置环境变量。
Process process = Runtime.getRuntime().exec("export MY_ENV=123");
始终返回新流程。但我希望它能够在当前进程中执行。有没有办法将输出附加到当前进程?
答案 0 :(得分:3)
inheritIO
允许您使用当前进程连接已启动进程的流waitFor
允许您等待外部流程完成示例:
new ProcessBuilder("/bin/ls").inheritIO()
.start()
.waitFor();
答案 1 :(得分:0)
Process
调用返回的exec
包含三个流:
process.getOutputStream()
,如果您写信,将被“管道”进入正在运行的流程process.getInputStream()
,如果读取,将包含标准输出(ls
输出)process.getErrorStream()
whihc,如果读取,将包含标准错误输出(运行ls
的错误消息,如果有的话)。作为程序员,您有责任从这些流中读取,并将它们输出到您的程序输出中,如果这是您想要的。
另外,如果你想获得,也应该检查process.exitValue()
。
设置单独的线程来监视Stdout和Stderr流是很常见的