EN JA
MQ_NOTIFY(2)
MQ_NOTIFY(2) FreeBSD System Calls Manual MQ_NOTIFY(2)

名称

mq_notifyメッセージが利用可能であることをプロセスに通知する (リアルタイム)

ライブラリ

POSIX Real-time Library (librt, -lrt)

書式

#include < mqueue.h>

int
mq_notify( mqd_t mqdes, const struct sigevent *notification);

解説

引数 notification が NULL でないなら、このシステムコールは、指定されたメッセージキュー記述子 mqdes に関連している空のメッセージキューにメッセージ到着を通知するために呼び出しプロセスを登録します。 notification 引数によって指定された通知は、メッセージキューが空から非空に遷移するとき、プロセスに送信されます。いつでも、メッセージキューによる通知のためには、1 つのプロセスだけが登録できます。呼び出しプロセス、または他のプロセスが既に指定されたメッセージキューでメッセージの到着の通知を登録しているなら、その後のそのメッセージキューに登録する試みは、失敗します。

notification 引数は、呼び出しプロセスがどのように通知されるかを定義する sigevent 構造体を指します。 notification->sigev_notifySIGEV_NONE であるなら、シグナルは通知されませんが、エラー状態と操作の戻り状態は、適切に設定されます。 notification->sigev_notifySIGEV_SIGNAL であるなら、 notification->sigev_signo で指定されたシグナルは、プロセスに送信されます。シグナルは、プロセスでキューに入れられ、 notification->sigev_value で指定された値は、生成されたシグナルの si_value のコンポーネントになります。

notificationNULL であり、プロセスが指定されたメッセージキューによって通知のために現在登録されているなら、既存の登録は、削除されます。

通知が登録されたプロセスに送信されるとき、登録は、削除されます。次に、メッセージキューは、登録が利用可能となります。

プロセスがメッセージキューにメッセージの到着の通知が登録され、いくつかのスレッドがメッセージがキューに到達するとき、メッセージを受信するのをウェートする (待つ)、 mq_receive() でブロックされるなら、到着メッセージは、適切な mq_receive() を満足します。結果の振る舞いは、まるでメッセージキューが空のままで残っているかのようであり、通知は送信されません。

戻り値

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

mq_notify() システムコールは、次の場合に失敗します:
[ EBADF]
mqdes 引数が、有効なメッセージキュー記述子ではありません。
[ EBUSY]
プロセスは、メッセージキューによって通知のために既に登録されています。

規格

mq_notify() システムコールは、 IEEE Std 1003.1-2004 (“POSIX.1”) に適合しています。

歴史

POSIX メッセージキューのサポートは FreeBSD 7.0 ではじめて登場しました。

COPYRIGHT

Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
November 29, 2005 FreeBSD