gpt4 book ai didi

linux - 查找通过 setsid 创建的进程组 ID

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:23 25 4
gpt4 key购买 nike

在 shell 脚本中,我看到使用 setsid,我们可以创建一个新的进程组。创建后,我找不到可靠的方法来获取组 ID。我的要求很简单,启动一个进程,完成后,清理任何后代(如果有的话)。我不想杀死主进程,因此我必须等待主进程结束。之后,如果我以某种方式获得了组 ID,我可以终止剩余的子进程。这可以用 kill -- -pgid 来完成。缺少的部分是如何获取组 ID?

最佳答案

这个脚本是我最后想出来的。希望这对某人有帮助。$!将给出 pid,并且必须使用 ps 来查找它的 gid。使用ps时前面多了一个空格,下一行变量扩展去掉了前面的空格。最后等到主进程后,杀掉这个组。

#!/bin/sh -x
setsid "$@" &
pid=$!
gidspace=$(ps -o pgid= $pid)
gid="${gidspace## }"
echo "gid $gid"
echo "waiting"
wait $pid
ps -s $gid -o pid,ppid,pgid,command
kill -- -$gid

关于linux - 查找通过 setsid 创建的进程组 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656571/

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