【发布时间】:2013-10-15 15:16:34
【问题描述】:
基本上我想要一个 bash 脚本进程,在收到 SIGINT 后,在退出之前杀死它的所有子进程。我读了here 使用以下内容:
trap "kill -TERM -$$ ; exit 1" INT QUIT
我也读过使用kill 0:
trap "kill -TERM 0 ; exit 1" INT QUIT
它们之间有什么区别,它们是否满足以下要求(如果不满足,是什么?)?:
- 仅杀死自身及其子进程(假设它是由终端命令启动的顶级进程)。
- 它不会杀死任何其他进程或同一 shell 脚本的实例(从单独的终端命令运行:即在运行
./foo.sh &然后./foo.sh时,杀死第二个不应该杀死第一个,即使在同一个 tty)。
【问题讨论】:
标签: linux bash shell process process-group