如何向多个进程发送SIGINT

如何向多个进程发送SIGINT

我正在尝试将 SIGINT 信号发送到多个进程,我认为这是正确的:

kill -2 <pid1> <pid2> ... <pid3>

但我无法确认...

答案1

是的,这是对的。手册页证实了这一点。跑步man kill说道:

SYNOPSIS
   kill [options] <pid> [...]

...

OPTIONS
   <pid> [...]
          Send signal to every <pid> listed.

您的 shell 可能提供其自己的内部版本kill,该版本将优先,但它应该与所描述的接口兼容。您也许可以通过运行找到更多信息help kill

我会使用kill -INT代替kill -2,因为名称到数字的映射可能因 UNIX 变体而异。

答案2

这很容易用程序进行测试,该程序生成一堆自身的副本,对信号做出反应,并等待信号:

% perl -E '$SIG{INT}=sub {say "ouch"};fork();fork();say $$;sleep 999'
17344
17346
17345
17347
ouch
ouch
ouch
ouch

黑泽明擦拭到另一个终端

% kill -2 17344 17346 17345 17347

显然是跑了。

答案3

怎么样:

for i in <pid1> <pid2> <pid3>; do kill -2 $i; done

或者:

for i in {17344..17347}; do kill -2 $i; done

相关内容