.\" Copyright (c) 1996 The NetBSD Foundation, Inc. .\" All rights reserved. .\" .\" This code is derived from software contributed to The NetBSD Foundation .\" by Paul Kranenburg. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the NetBSD .\" Foundation, Inc. and its contributors. .\" 4. Neither the name of The NetBSD Foundation nor the names of its .\" contributors may be used to endorse or promote products derived .\" from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" .\" $NetBSD: psignal.9,v 1.1 1996/06/22 22:57:35 pk Exp $ .\" %FreeBSD: src/share/man/man9/psignal.9,v 1.9 2001/10/01 16:09:25 ru Exp % .\" .\" $FreeBSD$ .Dd June 22, 1996 .Dt PSIGNAL 9 .Os .Sh 名称 .Nm psignal , .Nm pgsignal , .Nm gsignal .Nd プロセスまたはプロセスグループへのシグナルの配信 .Sh 書式 .In sys/types.h .In sys/signalvar.h .Ft void .Fn psignal "struct proc *p" "int signum" .Ft void .Fn pgsignal "struct pgrp *pgrp" "int signum" "int checkctty" .Ft void .Fn gsignal "int pgid" "int signum" .Sh 解説 これらの関数は 1 つ以上のプロセスへシグナルを配信します。 3 つの関数全てに共通な引数 .Fa signum は .Bq 1- Ns Dv NSIG の範囲であるべきです。 .Pp .Fn psignal 関数はシグナル番号 .Fa signum をプロセス構造体 .Fa p によって表現されるプロセスに配信します。 以下に示す少しの例外がありますが、配信先プロセスシグナル配置は更新され、 実行可能としてマークされます。そのためこのシグナルの取り扱いは、 コンテキストスイッチの後で配信先プロセスのコンテキスト内で完了します。 .Fn psignal は自分自身でコンテキストスイッチを引き起こすことはないことに注意してください。 .Pp 以下の場合には、配信先プロセスが実行可能としてマークされません。 .Bl -bullet -offset indent .It 配信先プロセスが割り込み不可能で眠っています。 そのシグナルはプロセスがシステムコールまたはトラップから戻ったときに 通知されます。 .It 配信先プロセスが現在はシグナルを無視しています。 .It デフォルトの行動 .Xr ( sigaction 2 を参照) を取る眠っているプロセスに停止シグナルが送られた場合には、 そのプロセスは起こされることなく停止させられます。 .It シグナルの行動 (例えば、ブロックまたは無視) にかかわらず、 .Dv SIGCONT は停止させられているプロセスを再スタートさせます (またはスリープに戻します)。 .El .Pp 配信先プロセスがトレース中の場合には、 .Fn psignal はまるで配信先プロセスが .Fa signum のためのデフォルトの行動を取ったかのように振舞います。 これはトレースしているプロセスにそのシグナルが通知されることを可能にします。 .Pp .Fn pgsignal 関数はシグナル番号 .Fa signum を .Fa pgrp によって記述されるプロセスグループの個々のメンバに配信します。 .Fa checkctty が 0 でない場合には、そのシグナルは制御端末を持っているプロセスにのみ 配信されます。 .Fn pgsignal は .Fa pgrp によって指されるプロセスグループ構造体の .Li pg_members フィールドによって指されるプロセスリストに沿って歩き、適切に .Fn psignal を呼び出すことによって実装されています。 .Fa pgrp が .Dv NULL の場合には何の行動も取りません。 .Pp .Fn gsignal 関数はシグナル番号 .Fa signum をグループ ID .Fa pgid によって識別されるプロセスグループの個々のメンバに配信します。 .Fn gsignal は最初に .Fa pgid に関連付けられているグループ構造体を見つけ、それから引数 .Fa checkctty を 0 に設定して .Fn pgsignal を実行します。 .Fa pgid が 0 の場合には何の行動も取りません。 .Sh 関連項目 .Xr sigaction 2 , .Xr tsleep 9