mq_notify, Subroutine
Zweck
Benachrichtigt einen Prozess darüber, dass eine Nachricht verfügbar ist
Bibliothek
Standard-C-Bibliothek (libc.a)
Syntax
#include <mqueue.h>
int mq_notify (mqdes, notification)
mqd_t mqdes;
const struct sigevent *notification;Beschreibung
Wenn der Parameter Benachrichtigung nicht NULL ist, registriert die Subroutine mq_notify den aufrufenden Prozess, um über den Eingang einer Nachricht in einer leeren Nachrichtenwarteschlange benachrichtigt zu werden, die dem angegebenen Nachrichtenwarteschlangendeskriptor mqdeszugeordnet ist. Die mit dem Parameter Benachrichtigung angegebene Benachrichtigung wird an den Prozess gesendet, wenn die Nachrichtenwarteschlange von leer in nicht leer übergeht. Es kann immer nur ein Prozess für die Benachrichtigung durch eine Nachrichtenwarteschlange registriert werden. Wenn der aufrufende Prozess oder ein anderer Prozess bereits für die Benachrichtigung über den Nachrichteneingang in der angegebenen Nachrichtenwarteschlange registriert ist, schlagen nachfolgende Versuche zur Registrierung für diese Nachrichtenwarteschlange fehl.
Wenn die Benachrichtigung NULL ist und der Prozess derzeit für die Benachrichtigung durch die angegebene Nachrichtenwarteschlange registriert ist, wird die vorhandene Registrierung entfernt.
Wenn die Benachrichtigung an den registrierten Prozess gesendet wird, wird seine Registrierung entfernt. Die Nachrichtenwarteschlange ist dann für die Registrierung verfügbar.
Wenn ein Prozess für die Benachrichtigung über den Eingang einer Nachricht in einer Nachrichtenwarteschlange registriert wurde und ein Thread in den Subroutinen mq_receive oder mq_timedreceive blockiert wird, die auf den Empfang einer Nachricht warten, Die eingehende Nachricht erfüllt die entsprechende Subroutine mq_receive bzw. mq_timedreceive . Das resultierende Verhalten sieht so aus, als ob die Nachrichtenwarteschlange leer bleibt und keine Benachrichtigung gesendet wird.
Parameter
| Element | Beschreibung |
|---|---|
| mqdes- | Gibt einen Nachrichtenwarteschlangendeskriptor an |
| Benachrichtigung | Verweist auf die Struktur sigevent . |
Rückgabewerte
Nach erfolgreicher Beendigung gibt die Subroutine mq_notify eine Null zurück. Andernfalls gibt es den Wert -1 zurück und setzt errno, um den Fehler anzuzeigen.
Fehlercodes
| Element | Beschreibung |
|---|---|
| EBADF | Der Parameter mqdes ist kein gültiger Nachrichtenwarteschlangendeskriptor. |
| EBUSY | Ein Prozess ist bereits für die Benachrichtigung durch die Nachrichtenwarteschlange registriert. |
| EFAULT | Ungültige verwendete Adresse. |
| ENOMEM | Nicht genügend Speicher für die erforderliche Operation. |
| ENOTSUP (ENOTSUP) | Diese Funktion wird nicht für Prozesse unterstützt, für die checkpoint-restart'ed. |
| EINVAL | Der aktuelle Prozess ist nicht für die Benachrichtigung für die angegebene Nachrichtenwarteschlange registriert und das Entfernen der Registrierung wurde angefordert. |