获取拒绝的后台进程的返回码

问题描述 投票:0回答:1

我的进程是使用

nohup
创建的,并且将被否认,以使其独立于其父进程的终止。

我需要这个后台进程的返回码,这是

disown
ed和
nohup
ed:

nohup bash -c 'exit 123' "$@" >log.txt 2>&1 </dev/null &
pid=$!
disown $pid
tail --pid=$pid -f log.txt

现在脚本将返回 0。但它应该返回使用

nohup
启动的进程的退出代码。

  • wait $pid
    不起作用并且始终返回 0。

如何获取进程的退出码?

bash background-process nohup
1个回答
2
投票

好的,我通过使用setsid而不是nohup和disown找到了解决方案:

setsid bash -c 'exit 123' "$@" >log.txt 2>&1 </dev/null &
pid=$!
tail --pid=$pid -f log.txt
wait $pid

现在它返回我的后台进程的退出代码,并且仍然忽略父进程的终止。

© www.soinside.com 2019 - 2024. All rights reserved.