SIGINTを複数のプロセスに送信する方法

SIGINTを複数のプロセスに送信する方法

複数のプロセスにSIGINT信号を送信しようとしていますが、これが正しいようです。

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

しかし、確認することはできません...

答え1

はい、そうです。マニュアルページでこれを確認してください。走る人はman killこう言いました。

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

...

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

シェルは独自の内部バージョンを提供でき、killこのバージョンは優先的に適用されますが、説明されているインターフェースと互換性がある必要があります。を実行すると、より多くの情報を確認できますhelp kill

名前と数字のマッピングはUNIXのバリエーションによって異なる可能性があるため、kill -INT代わりに使用します。kill -2

答え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

関連情報