mq_timedreceive man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

MQ_RECEIVE(P)		   POSIX Programmer's Manual		 MQ_RECEIVE(P)

NAME
       mq_receive,  mq_timedreceive  -	receive a message from a message queue
       (REALTIME)

SYNOPSIS
       #include <mqueue.h>

       ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
	      unsigned *msg_prio);

       #include <mqueue.h>
       #include <time.h>
       ssize_t mq_timedreceive(mqd_t mqdes, char *restrict msg_ptr,
	      size_t msg_len, unsigned *restrict msg_prio,
	      const struct timespec *restrict abs_timeout);

DESCRIPTION
       The mq_receive() function shall receive the oldest of the highest  pri‐
       ority message(s) from the message queue specified by mqdes. If the size
       of the buffer in bytes, specified by the msg_len argument, is less than
       the  mq_msgsize attribute of the message queue, the function shall fail
       and return an error. Otherwise, the selected message shall  be  removed
       from the queue and copied to the buffer pointed to by the msg_ptr argu‐
       ment.

       If the value of msg_len is greater  than	 {SSIZE_MAX},  the  result  is
       implementation-defined.

       If the argument msg_prio is not NULL, the priority of the selected mes‐
       sage shall be stored in the location referenced by msg_prio.

       If the specified message queue is empty and O_NONBLOCK is  not  set  in
       the message queue description associated with mqdes, mq_receive() shall
       block until a message  is  enqueued  on	the  message  queue  or	 until
       mq_receive()  is	 interrupted  by  a signal. If more than one thread is
       waiting to receive a message when a message arrives at an  empty	 queue
       and  the	 Priority  Scheduling  option is supported, then the thread of
       highest priority that has been waiting the longest shall be selected to
       receive	the message. Otherwise, it is unspecified which waiting thread
       receives the message. If the  specified	message	 queue	is  empty  and
       O_NONBLOCK  is  set  in	the  message queue description associated with
       mqdes, no message shall be removed from	the  queue,  and  mq_receive()
       shall return an error.

       The  mq_timedreceive() function shall receive the oldest of the highest
       priority	 messages  from	 the  message  queue  specified	 by  mqdes  as
       described for the mq_receive() function. However, if O_NONBLOCK was not
       specified when the message queue was opened via the mq_open() function,
       and no message exists on the queue to satisfy the receive, the wait for
       such a message shall be terminated when the specified timeout  expires.
       If O_NONBLOCK is set, this function is equivalent to mq_receive().

       The  timeout  expires  when  the absolute time specified by abs_timeout
       passes, as measured by the clock on which timeouts are based (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.

       If  the	Timers	option is supported, the timeout shall be based on the
       CLOCK_REALTIME clock; if the Timers option is not supported, the	 time‐
       out  shall be based on the system clock as returned by the time() func‐
       tion.

       The resolution of the timeout shall be the resolution of the  clock  on
       which  it  is  based.  The timespec argument is defined in the <time.h>
       header.

       Under no circumstance shall the operation fail with a timeout if a mes‐
       sage  can  be removed from the message queue immediately.  The validity
       of the abs_timeout parameter need not be checked if a  message  can  be
       removed from the message queue immediately.

RETURN VALUE
       Upon  successful	 completion, the mq_receive()	 and mq_timedreceive()
       functions shall return the length of the selected message in bytes  and
       the  message  shall  be	removed	 from the queue. Otherwise, no message
       shall be removed from the queue, the functions shall return a value  of
       -1, and set errno to indicate the error.

ERRORS
       The mq_receive()	   and mq_timedreceive() functions shall fail if:

       EAGAIN O_NONBLOCK  was  set  in the message description associated with
	      mqdes, and the specified message queue is empty.

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

       EMSGSIZE
	      The  specified  message  buffer  size, msg_len, is less than the
	      message size attribute of the message queue.

       EINTR  The mq_receive()	  or mq_timedreceive()	operation  was	inter‐
	      rupted by a signal.

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

       ETIMEDOUT
	      The  O_NONBLOCK  flag  was  not  set  when the message queue was
	      opened, but no message arrived on the queue before the specified
	      timeout expired.

       The mq_receive()	   and mq_timedreceive() functions may fail if:

       EBADMSG
	      The  implementation  has detected a data corruption problem with
	      the message.

       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       None.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       mq_open() , mq_send() , mq_timedsend() , msgctl() , msgget() , msgrcv()
       ,    msgsnd()   ,   time()   ,	the   Base   Definitions   volume   of
       IEEE Std 1003.1-2001, <mqueue.h>, <time.h>

COPYRIGHT
       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),	The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the	referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003			 MQ_RECEIVE(P)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net