gpt4 book ai didi

linux - bash setsid nohup ./prog & -- $!不指向子进程

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

我试图获取我使用 setsid 运行的进程的 pid,它应该像这样在后台运行:

test.sh:

#/bin/bash
setsid nohup ./my_program &
echo $!

如果我运行 ./test.sh,它将打印 my_program 进程的 pid,这正是我所需要的。但是如果像这样在我的 shell 中一个一个地运行这个命令:

$ setsid nohup ./my_program &
$ echo $!

它会给我 setsid 命令的 pid(或者可能是其他东西,但它几乎总是给我 my_program 的 pid 减一)。

这里发生了什么?为什么我自己在终端运行命令的结果与 test.sh 脚本的结果不同?

顺便说一句,您是否知道我使用 setsid 开始并需要在后台运行的一些简单流程?

最佳答案

转贴上面的评论作为回答:

这是因为如果当前进程是进程组组长,setsid 只会派生当前进程。可以找到详细的解释here .

要获取通过setsid 执行的进程的pid,给出的方法here可以试试。

关于linux - bash setsid nohup ./prog & -- $!不指向子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793448/

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