IPB
>  Man Pages > Linux > Suse Linux 10.1 > Section 2 > msgop man page

msgop man page

Section 2 - Suse Linux 10.1 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!


MSGOP(2)                   Linux Programmer's Manual                  MSGOP(2)




NAME

       msgop - message operations


SYNOPSIS

       #include <sys/types.h>
       #include <sys/ipc.h>
       #include <sys/msg.h>

       int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

       ssize_t  msgrcv(int  msqid,  void *msgp, size_t msgsz, long msgtyp, int
       msgflg);


DESCRIPTION

       The msgsnd() and msgrcv() system calls are used, respectively, to  send
       messages  to,  and receive messages from, a message queue.  The calling
       process must have write permission on the message  queue  in  order  to
       send a message, and read permission to receive a message.

       The  msgp argument is a pointer to caller-defined structure of the fol-
       lowing general form:

            struct msgbuf {
                 long mtype;     /* message type, must be > 0 */
                 char mtext[1];  /* message data */
            };

       The mtext field is an array (or other structure) whose size  is  speci-
       fied  by  msgsz, a non-negative integer value.  Messages of zero length
       (i.e., no mtext field) are permitted.  The  mtype  field  must  have  a
       strictly positive integer value.  This value can be used by the receiv-
       ing process for message selection  (see  the  description  of  msgrcv()
       below).

       The  msgsnd()  system  call appends a copy of the message pointed to by
       msgp to the message queue whose identifier is specified by msqid.

       If sufficient space is available in the queue, msgsnd() succeeds  imme-
       diately.   (The queue capacity is defined by the msg_bytes field in the
       associated data structure for the message queue.  During queue creation
       this  field is initialised to MSGMNB bytes, but this limit can be modi-
       fied using msgctl().)  If insufficient space is available in the queue,
       then  the default behaviour of msgsnd() is to block until space becomes
       available.  If IPC_NOWAIT is specified in msgflg, then the call instead
       fails with the error EAGAIN.

       A blocked msgsnd() call may also fail if the queue is removed (in which
       case the system call fails with errno set to EIDRM),  or  a  signal  is
       caught  (in  which case the system call fails with errno set to EINTR).
       (msgsnd and msgrcv are never automatically restarted after being inter-
       rupted  by  a  signal  handler,  regardless  of  the  setting   of  the
       SA_RESTART flag when establishing a signal handler.)

       Upon successful completion the message queue data structure is  updated
       as follows:

              msg_lspid is set to the process ID of the calling process.

              msg_qnum is incremented by 1.

              msg_stime is set to the current time.

       The  system call msgrcv() removes a message from the queue specified by
       msqid and places it in the buffer pointed to msgp.

       The argument msgsz specifies the maximum size in bytes for  the  member
       mtext of the structure pointed to by the msgp argument.  If the message
       text has length greater than  msgsz,  then  the  behaviour  depends  on
       whether  MSG_NOERROR  is specified in msgflg.  If MSG_NOERROR is speci-
       fied, then the message text will be truncated (and the  truncated  part
       will  be lost); if MSG_NOERROR is not specified, then the message isn't
       removed from the queue and the system  call  fails  returning  -1  with
       errno set to E2BIG.

       The argument msgtyp specifies the type of message requested as follows:

              If msgtyp is 0, then the first message in the queue is read.

              If msgtyp is greater than 0, then the first message in the queue
              of  type  msgtyp  is  read,  unless  MSG_EXCEPT was specified in
              msgflg, in which case the first message in the queue of type not
              equal to msgtyp will be read.

              If  msgtyp  is  less than 0, then the first message in the queue
              with the lowest type less than or equal to the absolute value of
              msgtyp will be read.

       The msgflg argument is a bit mask constructed by ORing together zero or
       more of the following flags:

       IPC_NOWAIT
              Return immediately if no message of the requested type is in the
              queue.  The system call fails with errno set to ENOMSG.

       MSG_EXCEPT
              Used with msgtyp greater than 0 to read the first message in the
              queue with message type that differs from msgtyp.

       MSG_NOERROR
              To truncate the message text if longer than msgsz bytes.

       If no message of the requested type is available and  IPC_NOWAIT  isn't
       specified  in  msgflg,  the calling process is blocked until one of the
       following conditions occurs:

              A message of the desired type is placed in the queue.

              The message queue is removed from the system.  In this case  the
              system call fails with errno set to EIDRM.

              The  calling  process catches a signal.  In this case the system
              call fails with errno set to EINTR.

       Upon successful completion the message queue data structure is  updated
       as follows:

              msg_lrpid is set to the process ID of the calling process.

              msg_qnum is decremented by 1.

              msg_rtime is set to the current time.


RETURN VALUE

       On  failure  both  functions return -1 with errno indicating the error,
       otherwise msgsnd() returns 0 and msgrcv() returns the number  of  bytes
       actually copied into the mtext array.


ERRORS

       When  msgsnd() fails, errno will be set to one among the following val-
       ues:

       EACCES     The calling process does not have write  permission  on  the
                  message  queue, and does not have the CAP_IPC_OWNER capabil-
                  ity.

       EAGAIN     The message can't be sent due to the  msg_qbytes  limit  for
                  the queue and IPC_NOWAIT was specified in msgflg.

       EFAULT     The address pointed to by msgp isn't accessible.

       EIDRM      The message queue was removed.

       EINTR      Sleeping  on  a  full  message  queue condition, the process
                  caught a signal.

       EINVAL     Invalid msqid value, or nonpositive mtype value, or  invalid
                  msgsz  value  (less  than 0 or greater than the system value
                  MSGMAX).

       ENOMEM     The system does not have enough memory to make a copy of the
                  message pointed to by msgp.

       When  msgrcv() fails, errno will be set to one among the following val-
       ues:

       E2BIG      The message text length is greater than msgsz and  MSG_NOER
                  ROR isn't specified in msgflg.

       EACCES     The  calling  process  does  not have read permission on the
                  message queue, and does not have the CAP_IPC_OWNER  capabil-
                  ity.

       EAGAIN     No  message  was  available  in the queue and IPC_NOWAIT was
                  specified in msgflg.

       EFAULT     The address pointed to by msgp isn't accessible.

       EIDRM      While the process was sleeping to  receive  a  message,  the
                  message queue was removed.

       EINTR      While  the  process  was  sleeping to receive a message, the
                  process caught a signal.

       EINVAL     msgqid was invalid, or msgsz was less than 0.

       ENOMSG     IPC_NOWAIT was specified in msgflg and  no  message  of  the
                  requested type existed on the message queue.


CONFORMING TO

       SVr4, SVID, SUSv3.


NOTES

       The  msgp  argument  is  declared as struct msgbuf * with libc4, libc5,
       glibc 2.0, glibc 2.1. It is declared as  void  *  with  glibc  2.2  and
       later, as required by SUSv2 and SUSv3.

       The  following  limits  on  message queue resources affect the msgsnd()
       call:

       MSGMAX     Maximum size for a message text: 8192 bytes (on Linux,  this
                  limit can be read and modified via /proc/sys/kernel/msgmax).

       MSGMNB     Default maximum size in bytes  of  a  message  queue:  16384
                  bytes  (on  Linux,  this  limit can be read and modified via
                  /proc/sys/kernel/msgmnb).  The superuser  can  increase  the
                  size  of  a message queue beyond MSGMNB by a msgctl() system
                  call.

       The implementation has no intrinsic limits for the system wide  maximum
       number of message headers (MSGTQL) and for the system wide maximum size
       in bytes of the message pool (MSGPOOL).


SEE ALSO

       msgctl(2), msgget(2), msgrcv(2),  msgsnd(2),  ipc(5),  capabilities(7),
       mq_overview(7)



Linux 2.6.15                      2006-02-02                          MSGOP(2)


Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Tue Feb 13 02:17:36 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

sqlite3 man page (5323 hits)
(openSUSE 10.2)

svn man page (5161 hits)
(FreeBSD 6.2)

adv_cap_autoneg man page (4865 hits)
(Solaris 10 11_06)

CPAN man page (4602 hits)
(Suse Linux 10.1)

ssh man page (4337 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (2838 hits)
(Solaris 10 11_06)

netcat man page (2687 hits)
(Suse Linux 10.1)

pprosetup man page (2472 hits)
(Solaris 10 11_06)

startproc man page (2450 hits)
(Suse Linux 10.1)

signal man page (2393 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: Pyrenees Accomodation :: Robust Foot Switch :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum