gpt4 book ai didi

java - 终止由 *nix 上的 ProcessBuilder 生成的子进程

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:06 27 4
gpt4 key购买 nike

我正在从一个 java 程序中执行一个 shell 管道——它会是这样的

ProcessBuilder builder = new ProcessBuilder(
"sh", "-c", "program1 | program2 | program3");
builder.start();

在某些情况下,可能需要终止此单元。然而

process.destroy();

只会破坏“sh”命令。管道中的命令将被孤立并由 init 进程采用。

是否有任何方法可以轻松终止所有这些子进程 - 或者以更容易终止它们的方式执行上述管道。无法更改程序 1/2/3。 Linux 之外的可移植性不是问题。

最佳答案

我有两种方法可以做到这一点:

  1. 你可以运行 pkill program1 program2 program3

  2. 您可以编写一个启动整个 bash 命令行的中间程序,这个中间程序将安装一个信号处理程序,当它收到 STOP 信号时会杀死它自己的 child 。

关于java - 终止由 *nix 上的 ProcessBuilder 生成的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com