sigqueue サブルーチン
目的
シグナルをプロセスのキューに入れます。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <signal.h>
int sigqueue (pid, signo, value)
pid_t pid;
int signo;
const union sigval value;説明
sigqueue サブルーチンにより、 signo パラメーターで指定されたシグナルが、 value パラメーターで指定された値とともに、 pid パラメーターで指定されたプロセスに送信されます。 signo パラメーターがゼロの場合、エラー検査は実行されますが、シグナルは実際には送信されません。 これは、 pid パラメーターの妥当性を検査するために使用できます。
プロセスが別のプロセスへのシグナルをキューに入れる許可を持つために必要な条件は、 kill サブルーチンの場合と同じです。
sigqueue サブルーチンは即時に戻ります。 SA_SIGINFO が指定されたシグナルの受信プロセスによって設定され、リソースがシグナルをキューに入れることができる場合、シグナルはキューに入れられ、受信プロセスに送信されます。 SA_SIGINFO が signo パラメーターに設定されていない場合、シグナルは少なくとも 1 回受信プロセスに送信されます。
SIGRTMIN から SIGRTMAX までの範囲の複数のシグナルを配信できるようにする必要がある場合は、最も小さい番号が最初に配信されます。
パラメーター
| 項目 | 説明 |
|---|---|
| pid | シグナルの送信先のプロセスを指定します。 |
| signo | シグナル番号を指定します。 |
| VALUE | シグナルと一緒に送信される値を指定します。 |
戻り値
正常終了すると、 sigqueue サブルーチンはゼロを戻します。 失敗した場合は-1を返し、エラーを示すerrno変数をセットする。
エラー・コード
sigqueue サブルーチンは、次の場合に失敗します。
| 項目 | 説明 |
|---|---|
| EAGAIN | シグナルをキューに入れるために使用できるリソースがありません。 プロセスが、受信側でまだ保留中の SIGQUEUE_MAX シグナルを既にキューに入れているか、またはシステム全体のリソース限界を超えています。 |
| EINVAL | signo パラメーターの値が無効またはサポートされないシグナル番号であるか、選択されたシグナルが受信プロセスを停止または続行できる場合。 AIX®は、以下のシグナルのキューイングをサポートしていません:SIGKILL、SIGSTOP、SIGTSTP、SIGCONT、SIGTTIN、SIGTTOU、および SIGCLD。 |
| EPERM | プロセスには、シグナルを受信プロセスに送信する適切な特権がありません。 |
| ESRCH | pid パラメーターで指定されたプロセスが存在しません。 |