mq_send(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

mq_send(3c)

mq_send(3C)              Standard C Library Functions              mq_send(3C)

NAME
       mq_send, mq_timedsend, mq_reltimedsend_np - send a message to a message
       queue

SYNOPSIS
       #include <mqueue.h>

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


       #include <mqueue.h>
       #include <time.h>

       int mq_timedsend(mqd_t mqdes, const char *msg_ptr,
            size_t msg_len, unsigned msg_prio,
            const struct timespec *restrict abs_timeout);


       int mq_reltimedsend_np(mqd_t mqdes, const char *msg_ptr,
            size_t msg_len, unsigned msg_prio,
            const struct timespec *restrict rel_timeout);

DESCRIPTION
       The  mq_send()  function  adds  the  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 pointed to by msg_ptr. The
       value  of  msg_len is less than or equal to the mq_msgsize attribute of
       the message queue, or mq_send() fails.


       If the specified message queue is not full, mq_send() behaves as if the
       message is inserted into the message queue at the position indicated by
       the msg_prio argument.  A  message  with  a  larger  numeric  value  of
       msg_prio  is  inserted before messages with lower values of msg_prio. A
       message will be inserted after other messages in  the  queue,  if  any,
       with  equal  msg_prio.  The value of msg_prio must be greater than zero
       and less than or equal to MQ_PRIO_MAX.


       If the specified message queue is full and O_NONBLOCK is not set in the
       message queue description associated with mqdes  (see  mq_open(3C)  and
       mq_setattr(3C)),  mq_send() blocks until space becomes available to en‐
       queue the message, or until mq_send() is interrupted by  a  signal.  If
       more than one thread is waiting to send when space becomes available in
       the  message  queue,  then the thread of the highest priority which has
       been waiting the longest is unblocked to send its  message.  Otherwise,
       it  is  unspecified which waiting thread is unblocked. If the specified
       message queue is full and O_NONBLOCK is set in the  message  queue  de‐
       scription  associated  with  mqdes,  the  message  is  not  queued  and
       mq_send() returns an error.


       The mq_timedsend() function adds a message to the message queue  speci‐
       fied  by  mqdes  in the manner defined for the mq_send() function. How‐
       ever, if the specified message queue is full and O_NONBLOCK is not  set
       in  the  message  queue description associated with mqdes, the wait for
       sufficient room in the queue is terminated when the  specified  timeout
       expires.  If  O_NONBLOCK  is set in the message queue description, this
       function is equivalent to mq_send().


       The mq_reltimedsend_np() function is identical  to  the  mq_timedsend()
       function,  except  that the timeout is specified as a relative time in‐
       terval.


       For mq_timedsend(), the timeout expires when the absolute  time  speci‐
       fied  by  abs_timeout  passes,  as measured by the CLOCK_REALTIME clock
       (that is, when the value of that clock equals or exceeds  abs_timeout),
       or  if  the  absolute  time  specified  by abs_timeout has already been
       passed at the time of the call.


       For mq_reltimedsend_np(), the timeout expires when  the  time  interval
       specified  by  rel_timeout  passes,  as  measured by the CLOCK_REALTIME
       clock, or if the time interval specified by rel_timeout is negative  at
       the time of the call.


       The  resolution  of the timeout is the resolution of the CLOCK_REALTIME
       clock. The timespec argument is defined in the <time.h> header.


       Under no circumstance does the operation fail with a timeout  if  there
       is sufficient room in the queue to add the message immediately. The va‐
       lidity  of the timeout parameter need not be checked when there is suf‐
       ficient room in the queue.

RETURN VALUES
       Upon successful completion, mq_send(), mq_timedsend(), and mq_reltimed‐
       send_np() return 0. Otherwise, no message is  enqueued,  the  functions
       return −1, and errno is set to indicate the error.

ERRORS
       The  mq_send(), mq_timedsend(), and mq_reltimedsend_np() functions will
       fail if:

       EAGAIN       The O_NONBLOCK flag is set in the message  queue  descrip‐
                    tion  associated  with  mqdes,  and  the specified message
                    queue is full.


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


       EINTR        A signal interrupted the function call.


       EINVAL       The value of msg_prio was outside the valid range.


       EINVAL       The process or thread would have blocked, and the  timeout
                    parameter  specified  a  nanoseconds field value less than
                    zero or greater than or equal to 1,000 million.


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


       ETIMEDOUT    The O_NONBLOCK flag was not set when the message queue was
                    opened, but the timeout expired before the  message  could
                    be added to the queue.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe _  Stan‐
       dardSee below.



       For mq_send() and mq_timedsend(), see standards(7).

SEE ALSO
       mq_open(3C),      mq_receive(3C),      mq_setattr(3C),     sysconf(3C),
       mqueue.h(3HEAD), attributes(7), standards(7)

Oracle Solaris 11.4               5 Feb 2008                       mq_send(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3