msgget - get message queue


     #include <sys/msg.h>

     int msgget(key_t key, int msgflg);


     The msgget() argument returns the message  queue  identifier
     associated with key.

     A message queue identifier and associated message queue  and
     data  structure (see intro(2)) are created for key if one of
     the following are true:

        o  key is IPC_PRIVATE.

        o  key does not already have a message  queue  identifier
           associated with it, and (msgflg&IPC_CREAT) is true.

     On creation, the data structure associated with the new mes-
     sage queue identifier is initialized as follows:

        o  msg_perm.cuid,   msg_perm.uid,   msg_perm.cgid,    and
           msg_perm.gid  are  set  to  the  effective user ID and
           effective group ID, respectively, of the calling  pro-

        o  The low-order 9 bits of msg_perm.mode are set  to  the
           low-order 9 bits of msgflg.

        o  msg_qnum,   msg_lspid,   msg_lrpid,   msg_stime,   and
           msg_rtime are set to 0.

        o  msg_ctime is set to the current time.

        o  msg_qbytes is set to the system limit.


     Upon   successful   completion,   a   non-negative   integer
     representing  a message queue identifier is returned. Other-
     wise, -1 is returned and errno is set to indicate the error.


     The msgget() function will fail if:

           A message queue identifier exists for key, but  opera-
           tion  permission  (see  intro(2))  as specified by the
           low-order 9 bits of msgflg would not be granted.

           A  message  queue  identifier  exists  for   key   but
           (msgflg&IPC_CREAT)   and  (msgflg&IPC_EXCL)  are  both

           A message queue identifier does not exist for key  and
           (msgflg&IPC_CREAT) is false.

           A message queue identifier is to be  created  but  the
           system-imposed  limit on the maximum number of allowed
           message  queue  identifiers  system  wide   would   be


     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not
     actually add those freed blocks to the  file  system's  free
     list  until  some  unspecified  time  in  the  future.  This
     behavior improves file system performance but does not  con-
     form  to the POSIX, Single UNIX Specification, SPARC Confor-
     mance Definition, System  V  Application  Binary  Interface,
     System  V Interface Definition, and X/Open Portability Guide
     Standards, which  require  that  freed  space  be  available
     immediately.  To enable standards conformance regarding file
     deletions or to address the problem of  not  being  able  to
     grow  files  on a relatively full UFS file system even after
     files  have  been  deleted,   disable   UFS   logging   (see


     mount_ufs(1M), intro(2),  msgctl(2),  msgrcv(2),  msgsnd(2),

Man(1) output converted with man2html