【发布时间】:2017-11-01 07:34:03
【问题描述】:
我有以下脚本 s2:
#!/bin/bash
trap 't' INT
function t() {
echo "trap"
}
sleep 999
那我打电话给s1:
#!/bin/bash
./s2 &
wait
所以 s1 等待 s2 休眠。 现在,当我按 Ctrl+C 时,它不会在 s2 中打印陷阱消息。这是为什么呢?
此外,如果在 s1 中,您在使用 INT 信号启动 s2 后显式杀死它,它仍然不会调用中断。
#!/bin/bash
./s2 &
pid=$!
kill -INT $pid
wait # waits for s2 instead of killing it right away
为什么?
【问题讨论】:
-
Ctrl-C 正在杀死前台进程组,而不仅仅是进程。 Bash 等待
sleep退出,因为它假设这个进程也有每个人的信号,它正在等待看它是否被处理