unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 msgget(2)							   msgget(2)




 NAME
      msgget - get message queue

 SYNOPSIS
      #include <&lt&lt&lt;sys/msg.h>&gt&gt&gt;

      int msgget(key_t key, int msgflg);

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

      A message queue identifier and associated message queue and data
      structure are created for key if one of the following is true:

	   key is equal to IPC_PRIVATE.	 This call creates a new identifier,
	   subject to available resources.  The identifier will never be
	   returned by another call to msgget() until it has been released
	   by a call to msgctl().  The identifier should be used among the
	   calling process and its descendents; however, it is not a
	   requirement.	 The resource can be accessed by any process having
	   the proper permissions.

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

	   On creation of a new queue, queue sizes above 64Kbytes can only
	   be constructed when the application is compiled with the
	   __BIGMSGQUEUE_ENABLED flag defined either explicitly with a
	   #define in the source or with -D__BIGMSGQUEUE_ENABLED at compile
	   time.

	   WARNING: Programs compiled on HP-UX revisions prior to 11.11 use
	   old 16-bit msqid_ds structure fields (obtained via IPC_STAT of
	   the msgctl(2) system call) which can describe queue sizes only up
	   to 64KBytes.	 Care must be taken such that queues shared with
	   such programs are not made larger than 64KBytes (i.e., that
	   __BIGMSGQUEUE_ENABLED is not specified when compiling the caller
	   of msgget).	Or, those existing programs should be recompiled.
	   Or, the system administrator should restrict the MSGMNB kernel
	   tunable parameter to 64KBytes or less.

      Upon creation, the data structure associated with the new message
      queue identifier is initialized as follows:

	   msg_perm.cuid, msg_perm.uid, msg_perm.cgid, and msg_perm.gid are
	   set equal to the effective user ID and effective group ID,
	   respectively, of the calling process.

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




 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000






 msgget(2)							   msgget(2)




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

	   msg_ctime is set equal to the current time.

	   msg_qbytes is set equal to the system limit.

 RETURN VALUE
      Upon successful completion, a non-negative integer, namely a message
      queue identifier, is returned.  Otherwise, a value of -1 is returned
      and errno is set to indicate the error.

 ERRORS
      msgget() fails if one or more of the following is true:

      [EACCES]	     A message queue identifier exists for key, but
		     operation permission as specified by the low-order 9
		     bits of msgflg would not be granted.

      [ENOENT]	     A message queue identifier does not exist for key and
		     (msgflg &&amp&amp&amp; IPC_CREAT) is ``false''.

      [ENOSPC]	     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
		     exceeded.

      [EEXIST]	     A message queue identifier exists for key but ((msgflg
		     & IPC_CREAT) && (msgflg & IPC_EXCL)) is ``true''.

 SEE ALSO
      ipcrm(1), ipcs(1), msgctl(2), msgop(2), stdipc(3C).

 STANDARDS CONFORMANCE
      msgget(): SVID2, SVID3, XPG2, XPG3, XPG4



















 Hewlett-Packard Company	    - 2 -   HP-UX Release 11i: November 2000