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

Die Subroutine mq_notify schlägt in folgenden Fällen fehl:
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.