使用SIGINT杀死父进程时,子进程如何终止?

时间:2018-07-10 06:38:23

标签: bash unix

#!/usr/bin/env bash
for i in $(seq 1  $1);
do
   ./extended&
done
wait

这是我的bash脚本,我执行扩展二进制文件的次数与命令行参数中指定的次数相同。当我使用SIGINT杀死bash脚本时,子进程也被杀死。我在bash脚本中调用了wait,但无法弄清楚子进程是如何被杀死的。我知道,等待会让父母等到孩子终止。

1 个答案:

答案 0 :(得分:0)

bash默认在退出时向所有子级发送SIGHUP(挂断信号)。如果您不希望出现这种情况,请使用disown -h

来自man bash

为防止外壳程序将信号发送到特定作业,应使用内置的disown将其从作业表中删除或标记为不接收SIGHUP        使用disown -h。