使用 -SIGINT 关闭在破折号脚本中启动的 dd 进程

Close a dd process, that was started in a dash script, with -SIGINT

当我使用

直接从终端启动 dd 进程时
dd if=/dev/zero of=/dev/null &

命令并向它发送一个 -SIGINT

kill -SIGINT <pid>

命令它成功关闭。但是当我从脚本开始这个过程时

#!/bin/sh
dd if=/dev/zero of=/dev/null &

kill -SIGINT <pid> 不影响进程。我想知道为什么会这样。我在网上没有找到相关资料。

POSIX says:

If job control is disabled (see the description of set -m) when the shell executes an asynchronous list, the commands in the list shall inherit from the shell a signal action of ignored (SIG_IGN) for the SIGINT and SIGQUIT signals.

这可能是因为 Ctrl+C 向组中的每个进程发送了一个信号,所以如果没有这种行为,当您尝试中断主脚本时,任何后台进程都会意外终止。