Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > M

mq_send(2)

HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

mq_send — send a message to a message queue

SYNOPSIS

#include <sys/mqueue.h>

int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio );

DESCRIPTION

The mq_send() system call adds a message pointed to by the argument msg_ptr to the message queue specified by mqdes. The msg_len argument specifies the length of the message in bytes. The value of msg_len should be less than or equal to the mq_msgsize attribute of the message queue, or mq_send() will fail.

If the specified message queue is not full, mq_send() will insert the message into the queue at the position indicated by the msg_prio argument. A message with priority, msg_prio, will be inserted behind any other messages with larger or equal priority. The value of msg_prio should be less than MQ_PRIO_MAX.

If the specified message queue is full and the O_NONBLOCK flag is not set in the message queue blocking status associated with mqdes, mq_send() will block in priority order, until it can send a message on the queue, or until mq_send() is interrupted by a signal. If the specified message queue is full and the O_NONBLOCK flag is set in the message queue blocking status associated with mqdes, the message will not be enqueued, and mq_send() will return with an error.

To use this function, link in the realtime library by specifying -lrt on the compiler or linker command line.

RETURN VALUE

mq_send() returns the following values:

0

Successful completion. The message is enqueued.

-1

Failure. errno is set to indicate the error and the message is not enqueued.

ERRORS

If mq_send() fails, errno is set to one of the following values:

[EAGAIN]

The O_NONBLOCK flag is set in the message queue blocking status associated with mqdes, and the message queue is full.

[EBADF]

mqdes is not a valid message queue descriptor open for writing.

[EINTR]

A signal interrupted the call to mq_send().

[EINVAL]

msg_ptr points to an invalid address, or the value of msg_prio is outside the valid range.

[EMSGSIZE]

The specified message length, msg_len, exceeds the message size attribute of the message queue.

[ENOSYS]

mq_send() is not supported by the implementation.

STANDARDS CONFORMANCE

mq_send(): POSIX 1003.1b

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.