mq_notify()
Ask to be notified when there's a message in the queue
Synopsis:
#include <mqueue.h>
int mq_notify(
mqd_t mqdes,
const struct sigevent* notification );
Arguments:
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
If notification isn't NULL, the mq_notify() function asks the server to notify the calling process when the queue makes the transition from empty to nonempty. The means by which the server is to notify the process is passed in the sigevent structure pointed to by notification. Once the message queue server has notified the process of the transition, the notification is removed.
- The message queue manager needs to be running. For more information, see the entry mqueue in the Utilities Reference.
- This function accepts registered events (see MsgRegisterEvent()), but for compatibility with POSIX, it also accepts unregistered events, even if the system as a whole is required to use registered events (see the -U option for procnto).
We recommend that you use the following event types in this case:
- SIGEV_SIGNAL
- SIGEV_SIGNAL_CODE
- SIGEV_SIGNAL_THREAD
- SIGEV_PULSE
Under normal operation, only one process may register for notification at a time. If a process attempts to attach a notification, and another process is already attached, an error is returned and errno is set to EBUSY.
If a process has registered for notification, and another process is blocked on mq_receive(), then the mq_receive() call is satisfied by any arriving message. The resulting behavior is as if the message queue remained empty.
If notification is NULL and the current process is currently registered for notification, then the existing registration is removed.
Returns:
-1 if an error occurred (errno is set). Any other value indicates success.
Errors:
- EBADF
- Invalid message queue mqdes.
- EBUSY
- A process has already registered for notification for the given queue.
- EINVAL
- The notification is NULL, but there is a notification registered by a different process
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | No |
Thread | Yes |