ProcessBuilder 在修改 PB 配置时生成进程行为
ProcessBuilder spawned process behaviour when modifying PB config
我的问题是:
ProcessBuilder 环境变量或工作目录中的更改是否对先前生成的进程有影响? Debian 9 和 Windows 7 上的简单测试表明 对已经创建的进程没有影响,但我想确定这是预期的行为,最好有一些link官方文档或一些关于 ProcessBuilder 内部结构的解释该声明是不必要的。
详情:
我在并发系统中使用 Process Builder 从多个线程生成具有不同环境变量和工作目录的同一进程的实例。
我目前正在使用 ProcessBuilderControler class,它通过同步对 PB 的访问来避免典型的并发问题,以避免在 T1 和 T2 尝试同时生成进程时出现如下问题:
- T1 设置 PB 的工作目录值为“/dir”
- T2 设置 PB 的工作目录值为“/dir2”
- T1执行PB的start()
- T2执行PB的start()
在这种情况下,T1 和 T2 进程会生成以 /dir2 作为工作目录的脚本。
我担心的是,即使在生成进程后更改 pb 目录,进程也可能会获得最新值。根据我强制描述的情况的测试,windows 或 linux 中的情况并非如此..
不,这是 OS 的一般限制,您不能更改 环境变量 和 工作目录 来自进程外部的 运行 进程。
也许可以使用调试 API,但这肯定不是 ProcessBuilder
可以做到的。
I'm currently using a ProcessBuilderControler class which avoids the typical concurrency problems by synchronizing the access to PB in order to avoid problems
在控制器 class 中使用 ProcessBuilder
时,避免并发问题的正确方法是不使用 ProcessBuilder
.
的共享实例
这实际上是一般性的建议:不要在控制器中使用共享可变对象。
我的问题是:
ProcessBuilder 环境变量或工作目录中的更改是否对先前生成的进程有影响? Debian 9 和 Windows 7 上的简单测试表明 对已经创建的进程没有影响,但我想确定这是预期的行为,最好有一些link官方文档或一些关于 ProcessBuilder 内部结构的解释该声明是不必要的。
详情:
我在并发系统中使用 Process Builder 从多个线程生成具有不同环境变量和工作目录的同一进程的实例。
我目前正在使用 ProcessBuilderControler class,它通过同步对 PB 的访问来避免典型的并发问题,以避免在 T1 和 T2 尝试同时生成进程时出现如下问题:
- T1 设置 PB 的工作目录值为“/dir”
- T2 设置 PB 的工作目录值为“/dir2”
- T1执行PB的start()
- T2执行PB的start()
在这种情况下,T1 和 T2 进程会生成以 /dir2 作为工作目录的脚本。
我担心的是,即使在生成进程后更改 pb 目录,进程也可能会获得最新值。根据我强制描述的情况的测试,windows 或 linux 中的情况并非如此..
不,这是 OS 的一般限制,您不能更改 环境变量 和 工作目录 来自进程外部的 运行 进程。
也许可以使用调试 API,但这肯定不是 ProcessBuilder
可以做到的。
I'm currently using a ProcessBuilderControler class which avoids the typical concurrency problems by synchronizing the access to PB in order to avoid problems
在控制器 class 中使用 ProcessBuilder
时,避免并发问题的正确方法是不使用 ProcessBuilder
.
这实际上是一般性的建议:不要在控制器中使用共享可变对象。