为什么一个被捕获的信号会导致另一个信号重复?

为什么一个被捕获的信号会导致另一个信号重复?

这是我的脚本:

#!/bin/bash

# this is repeat-signal.sh

trap "echo got USR1; wait" USR1
trap "echo got INT" INT

(
  kill -s USR1 $$
  sleep 100
) &

wait

当我通过输入运行它时./repeat-signal.sh,它会"got USR1"按预期打印。然后,当我发送INT信号(使用 ctrl+c 或kill从另一个终端使用)时,它会打印两行:

got INT
got USR1

我原以为它只会打印got INT

为什么got USR1我发送INT信号时会打印出该行?似乎INT信号以某种方式导致USR1信号重复。

编辑以澄清:

最后,我的终端看起来像这样:

bash-5.0$ ./repeat-signal.sh
got USR1
^Cgot INT
got USR1

编辑2:

实际上,这似乎发生在 bash 3.2 中,但不是 bash 5.0

相关内容