KILL(2) — NEWS-OS Programmer’s Manual
名称
kill − プロセスへシグナルを送る
形式
kill(pid, sig)
int pid, sig;
解説
kill は、 プロセス番号 pid で指定されたプロセスへシグナル sig を 送ります。 sig は、 sigvec(2) で指定されているシグナルのうちの 1 つか、 または 0 でもかまいませんが、 0 にした場合には、 実際にシグナルは送られずにエラーのチェックが行われます。 これは、 pid の有効性を チェックするために使用することができます。
送信元および受信先のプロセスは、 同じ有効ユーザ ID を 持っていなければなりません。 そうでない場合には、 このコールはスーパーユーザだけに限定されます。 唯一の例外はシグナル SIGCONT で、 このシグナルは、 常に現プロセスのどの子孫へも送ることができます。
プロセス番号が 0 である場合には、 シグナルは、 その送信元のプロセスグループに属しているすべてのプロセスへ送られます。 これは、 killpg(2) の変形です。
プロセス番号が −1 であり、 かつ、 ユーザがスーパーユーザである場合には、 シグナルは、 システムプロセスとそのシグナルの送信元プロセス以外のすべての プロセスへ送られます。 プロセス番号が −1 であり、 かつ、 ユーザがスーパーユーザではない場合には、 そのシグナルの送信元プロセス以外で、 そのユーザと同じユーザ ID を 有するすべてのプロセスへ送られます。 シグナルの届かなかったプロセスがあったとしても、 エラーは返されません。
SYSTEMV との互換性のために、 プロセス番号が −1 以外の負の値である場合には、 シグナルは、 プロセスグループ ID がそのプロセス番号の絶対値に等しい すべてのプロセスへ送られます。 これは、 killpg(2) の変形です。
プロセスは、 自分自身へシグナルを送ることもできます。
リターン値
正常に終了すると、 値 0 が返されます。 そうでない場合には、 値 −1 が返され、 errno はエラーを 示すようにセットされます。
エラー
以下に示されている項目のいずれかが発生した場合には、 kill は失敗し、 シグナルは送られません。
[EINVAL] sig が有効なシグナル番号ではない。
[ESRCH] pid で指定されたプロセスに対応するプロセスが見つからない。
[ESRCH] プロセス ID が 0 として与えられたが、 送信元のプロセスはプロセスグループを 持っていない。
[EPERM] 送信元プロセスがスーパーユーザではなく、 その有効ユーザ ID が受信先プロセスの有効ユーザ ID と一致していない。 プロセスグループへのシグナルの送信では、 そのグループのいずれかのメンバにシグナルが届かなかった場合に、 このエラーが返される。
関連事項
getpid(2), getpgrp(2), killpg(2), sigvec(2)
NEWS-OSRelease 4.2.1R