我的进程是使用
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。如何获取进程的退出码?
好的,我通过使用setsid而不是nohup和disown找到了解决方案:
setsid bash -c 'exit 123' "$@" >log.txt 2>&1 </dev/null &
pid=$!
tail --pid=$pid -f log.txt
wait $pid
现在它返回我的后台进程的退出代码,并且仍然忽略父进程的终止。