[ProcessBuilder修改PB配置时产生的过程行为

问题描述 投票:0回答:1

我的问题是:

ProcessBuilder环境变量或工作目录中的更改对先前生成的进程有影响吗?在Debian 9和Windows 7上进行的简单测试表明对已创建的进程没有影响,但是我想以确保这是预期的行为,最好具有指向正式文档的链接或对ProcessBuilder内部的一些解释,从而使该语句不必要。

详细信息:

我在并发系统中使用Process Builder来生成具有多个线程的不同环境变量和工作目录的同一进程的实例。

我目前正在使用ProcessBuilderControler类,该类通过同步对PB的访问来避免典型的并发问题,从而避免在T1和T2尝试同时生成一个进程时出现以下类似问题:

  • [T1将PB的工作目录设置为值“ / dir”
  • [T2将PB的工作目录设置为值“ / dir2”
  • T1执行PB的start()
  • T2执行PB的start()

在这种情况下,T1和T2进程将生成带有/ dir2作为工作目录的脚本。

我担心的是,即使在生成进程后也更改了pb目录,该进程将获得最新的值。根据我的测试,在Windows或Linux中不是这种情况,我在这种情况下强行描述了这种情况。

java process processbuilder
1个回答
0
投票

否,这是操作系统的一般限制,您不能从进程外部更改正在运行的进程的环境变量工作目录

也许可以使用调试API,但这当然不是ProcessBuilder会做的。


我目前正在使用ProcessBuilderControler类,该类通过同步对PB的访问以避免问题来避免典型的并发问题

避免在控制器类中使用ProcessBuilder时并发问题的正确方法是不使用ProcessBuilder的共享实例。

实际上是一般的推荐:请勿在控制器中使用共享的可变对象。

© www.soinside.com 2019 - 2024. All rights reserved.