我的问题是:
ProcessBuilder环境变量或工作目录中的更改对先前生成的进程有影响吗?在Debian 9和Windows 7上进行的简单测试表明对已创建的进程没有影响,但是我想以确保这是预期的行为,最好具有指向正式文档的链接或对ProcessBuilder内部的一些解释,从而使该语句不必要。
详细信息:
我在并发系统中使用Process Builder来生成具有多个线程的不同环境变量和工作目录的同一进程的实例。
我目前正在使用ProcessBuilderControler类,该类通过同步对PB的访问来避免典型的并发问题,从而避免在T1和T2尝试同时生成一个进程时出现以下类似问题:
在这种情况下,T1和T2进程将生成带有/ dir2作为工作目录的脚本。
我担心的是,即使在生成进程后也更改了pb目录,该进程将获得最新的值。根据我的测试,在Windows或Linux中不是这种情况,我在这种情况下强行描述了这种情况。
否,这是操作系统的一般限制,您不能从进程外部更改正在运行的进程的环境变量和工作目录。
也许可以使用调试API,但这当然不是ProcessBuilder
会做的。
我目前正在使用ProcessBuilderControler类,该类通过同步对PB的访问以避免问题来避免典型的并发问题
避免在控制器类中使用ProcessBuilder
时并发问题的正确方法是不使用ProcessBuilder
的共享实例。
实际上是一般的推荐:请勿在控制器中使用共享的可变对象。