当父母离开时叉子子进程会死? (bash)

问题描述:

我正在使用并行处理,而不是处理cvars和锁我发现在shell脚本中依次运行一些命令以避免竞争条件在一个地方更容易。新问题是这些命令中的一个调用另一个程序,操作系统决定将这个程序放入一个新进程。我需要从父程序中杀死这个进程,但是父程序只知道父进程的pid(shell脚本),所以这个进程会自动执行。当父母离开时叉子子进程会死? (bash)

有没有办法在bash中设置一个子进程死亡,当父母死亡?我试图弄清楚如何将它作为一个守护进程来执行,因为我在守护进程中读取守护进程时退出,但这很棘手,我不能完全正确地执行它。谢谢!

+0

你的意思是说当开始的父脚本退出时要杀死所有的后台进程吗? – Inian

+0

是的!我怎样才能做到这一点?谢谢。 – AndyW

+0

我想你会在父进程退出时需要'trap'命令,但我不知道如何使用它。 – Inian

发现问题,并解决了这个问题(除了一些烦人的消息,不知何故无法重定向到/ dev/null)。

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT 
+0

在你遇到的问题上增加一点背景知识,并解释这个命令如何解决它! – Inian