gpt4 book ai didi

ruby - 从 Ruby 中杀死进程组会杀死我的整个计算机

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:02 25 4
gpt4 key购买 nike

我有一个生成大量子进程的脚本 (script.sh)。如果我通过 ./script.sh 从 shell 运行脚本,我可以通过

终止整个进程树
kill -- -<PID> 

其中 PID 是 script.sh 进程的进程 ID(这显然等于组 ID)。

但是,如果我通过 Ruby 生成脚本

pid = Process.spawn(script.sh) 

我无法杀死进程树。

Process.kill(9,pid) 

只杀死父进程。更糟糕的是,以下内容

Process.kill(9,-Process.getpgid(pid))  ### Don't try this line at home

终止我的电脑。试图通过

终止进程
system("kill -- -#{pid}") 

也失败了。我应该如何从 Ruby 中杀死这个进程树?

最佳答案

我想我已经找到了解决方案。生成过程为

pid = Process.spawn(script.sh, :pgroup => true)

让我能够通过

杀死进程组
Process.kill(9,-Process.getpgid(pid))

看起来 bash 默认将进程分组,而 Spawn 默认不启用此功能。

关于ruby - 从 Ruby 中杀死进程组会杀死我的整个计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027973/

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