kill と pid=0 でシグナルを送信する

kill と pid=0 でシグナルを送信する

kill'sよりman:

pidが0の場合、sigは、送信者のプロセスグループIDと同じプロセスグループIDを持ち、プロセスがシグナルを送信する権限を持つすべてのプロセス(指定されていないシステムプロセスセットを除く)に送信されます。

正確にはどういうfor which the process has permission to send a signal意味ですか? どのプロセスがシグナルを受信するかを確認するにはどうすればよいですか?

たとえば、kill -9 0現在のプロセスで開始されたすべてのプロセスを強制終了します。端末そしてその端末それ自体。それとも何か他のものがあるのでしょうか?

答え1

正確にはどういうfor which the process has permission to send a signal意味ですか?

答えは man ページに書かれています:

プロセスがシグナルを送信する権限を持つためには、特権を持っているか、送信プロセスの実ユーザーIDまたは実効ユーザーIDがターゲットプロセスの実ユーザーIDまたは保存されたセットユーザーIDと等しくなければなりません。シグナル継続送信プロセスと受信プロセスが同じセッションに属している場合はこれで十分です。

どのプロセスがシグナルを受信するかを確認するにはどうすればよいですか?

プロセス リストを調べて、シグナル 0 (ドライ ラン シグナル) で各プロセスを強制終了してみることもできます。これにより、実際のシグナルを送信する権限があったかどうかがわかります。

関連情報