为什么 wait $pid 命令会被等待进程的任何信号中断?

为什么 wait $pid 命令会被等待进程的任何信号中断?

我找不到任何文件可以充分解释我的观察结果。运行以下代码后,我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

3.7.6 信号

当 Bash 通过内置函数等待异步命令时wait,接收到已设置陷阱的信号将导致 wait 内置函数立即返回,退出状态大于 128,然后立即执行陷阱。

相关内容