我想在启动后通过ProcessBuilder设置SubProcess的环境变量。以下代码不起作用:
ProcessBuilder pb = new ProcessBuilder("cscript.exe", "test.vbs");
Process p = pb.start();
pb.environment().put("test", "1");
有办法做到这一点吗?
答案 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: ...对此流程构建器的后续修改不会影响返回的流程。