【发布时间】:2018-07-10 06:38:23
【问题描述】:
#!/usr/bin/env bash
for i in $(seq 1 $1);
do
./extended&
done
wait
这是我的 bash 脚本,我执行扩展二进制文件的次数与命令行参数中指定的一样多。当我使用 SIGINT 杀死 bash 脚本时,子进程也被杀死了。我在 bash 脚本中调用了 wait 我无法弄清楚子进程是如何被杀死的。我知道等待会让父母等到孩子终止。
【问题讨论】:
#!/usr/bin/env bash
for i in $(seq 1 $1);
do
./extended&
done
wait
这是我的 bash 脚本,我执行扩展二进制文件的次数与命令行参数中指定的一样多。当我使用 SIGINT 杀死 bash 脚本时,子进程也被杀死了。我在 bash 脚本中调用了 wait 我无法弄清楚子进程是如何被杀死的。我知道等待会让父母等到孩子终止。
【问题讨论】:
bash 默认情况下在退出时向所有孩子发送SIGHUP(挂断信号)。如果您不希望这种行为使用disown -h
来自man bash:
为防止 shell 向特定作业发送信号,应使用 disown 内置函数将其从作业表中删除或标记为不接收 SIGHUP 使用 disown -h。
【讨论】: