代码之家  ›  专栏  ›  技术社区  ›  Simiil

在进程启动后更改ProcessBuilder的环境变量

  •  0
  • Simiil  · 技术社区  · 12 年前

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

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

    有办法做到这一点吗?

    2 回复  |  直到 12 年前
        1
  •  3
  •   Deepak Bala    12 年前

    不,你不能那样做。Process builder环境是孤立的,并且在启动它们之后是不可变的。

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

    对该流程生成器的后续修改不会影响返回的流程。

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

    OutputStream os = process.getOutputStream();  
    // write data to this stream and read it on the other end.
    
        2
  •  2
  •   Evgeniy Dorofeev    12 年前

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