以编程方式将环境变量附加到当前进程

时间:2014-10-07 13:08:10

标签: java runtime.exec

主要目的是通过java代码设置环境变量。

Process process = Runtime.getRuntime().exec("export MY_ENV=123");

始终返回新流程。但我希望它能够在当前进程中执行。有没有办法将输出附加到当前进程?

2 个答案:

答案 0 :(得分:3)

使用ProcessBuilder

  • inheritIO允许您使用当前进程连接已启动进程的流
  • waitFor允许您等待外部流程完成

示例:

new ProcessBuilder("/bin/ls").inheritIO()
                             .start()
                             .waitFor();

答案 1 :(得分:0)

Process调用返回的exec包含三个流:

  1. process.getOutputStream(),如果您写信,将被“管道”进入正在运行的流程
  2. process.getInputStream(),如果读取,将包含标准输出(ls输出)
  3. process.getErrorStream() whihc,如果读取,将包含标准错误输出(运行ls的错误消息,如果有的话)。
  4. 作为程序员,您有责任从这些流中读取,并将它们输出到您的程序输出中,如果这是您想要的。

    另外,如果你想获得,也应该检查process.exitValue()

    设置单独的线程来监视Stdout和Stderr流是很常见的