在流程开始后更改ProcessBuilder的环境变量

时间:2013-04-11 09:27:29

标签: java environment-variables processbuilder

我想在启动后通过ProcessBuilder设置SubProcess的环境变量。以下代码不起作用:

ProcessBuilder pb  = new ProcessBuilder("cscript.exe", "test.vbs");
Process p = pb.start();
pb.environment().put("test", "1");

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:3)

不,你不能那样做。进程构建器环境是隔离的,启动后不可变。

  

两个ProcessBuilder实例始终包含独立进程环境,因此对返回的映射的更改将永远不会反映在任何其他ProcessBuilder实例或System.getenv返回的值中。

     

对此流程构建器的后续修改不会影响返回的流程。

如果您有兴趣将信息传递给 后的流程,请使用OutputStream进行处理并写入。该进程应从其输入流中读取并处理来自调用者的通信。 More help

OutputStream os = process.getOutputStream();  
// write data to this stream and read it on the other end.

答案 1 :(得分:2)

这是不可能的,请参阅ProcessBuilder.start API: ...对此流程构建器的后续修改不会影响返回的流程。