我找不到任何文件可以充分解释我的观察结果。运行以下代码后,我kill -SIGINT $my_pid
从不同的 shell 执行 a。我会正确地看到#### received trap 2
前两次。然而,该wait
命令在每次信号时都会被中断。为什么?
#!/bin/bash
for s in {0..64}
do
trap "echo '#### received trap $s'" $s
done
./code &
pid=$!
my_pid=$$
wait $pid
wait $pid
答案1
当 Bash 通过内置函数等待异步命令时
wait
,接收到已设置陷阱的信号将导致 wait 内置函数立即返回,退出状态大于 128,然后立即执行陷阱。