我需要从Java内部(> = 1.5; ProcessBuilder)执行并终止/中止不同的shell脚本。 使用标准的Java机制,我只能杀死用于执行shell脚本的主进程。 当这个shell脚本启动其他进程(例如./foo.sh&; ./bar.sh&)时,当我终止/中止Java内部的主shell脚本进程时,进程仍在运行。
如何从Java内部跟踪所有新的子/subprocess的所有ID? 有没有什么可行的方法来做到这一点? 还是有可能(在* nix和Win-OSes)find一个已知进程产生的所有进程?
谢谢,托马斯
如果您控制了不同的脚本,则可以将其子代的PID(使用$!来查找上次运行的后台进程的PID)传递回主Java程序。 这似乎是一个相当干净的方式给你你需要的东西。
否则, 这似乎相当有希望 。