0

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

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

有没有办法做到这一点?

4

2 回答 2

3

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

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

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

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

OutputStream os = process.getOutputStream();  
// write data to this stream and read it on the other end.
于 2013-04-11T09:51:35.490 回答
2

不可能的,看ProcessBuilder.start API:... 后续修改这个流程构建器不会影响返回的流程。

于 2013-04-11T09:30:42.707 回答