基本上,我想要一个 bash 脚本进程,在收到一个SIGINT
,在退出之前杀死它的所有子进程。我在这里读到使用以下内容:
trap "kill -TERM -$$ ; exit 1" INT QUIT
我也读过使用kill 0
:
trap "kill -TERM 0 ; exit 1" INT QUIT
它们之间有什么区别,它们是否满足以下要求(如果不满足,是什么?)?:
- 只杀死它自己及其子进程(假设它是由终端命令启动的顶级进程)。
- 它不会杀死任何其他进程或同一 shell 脚本的实例(从单独的终端命令运行:即在运行时
./foo.sh &
then./foo.sh
,即使在同一个 tty 中,杀死第二个也不应该杀死第一个)。