>我有以下脚本 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
为什么?
这里有两个问题。我不确定第二个问题的答案,但我可以告诉你你的第一个例子是怎么回事。
- 您启动 S1
- S2 由 S1 启动
- S1 正在等待 S2
- 你杀了S1
- S2 仍在运行
您可以通过检查正在运行的进程来确认这一点。
你的第二个例子对我来说似乎有点奇怪。如果我弄清楚了,我会更新我的答案。