COHERENT manpages
This page displays the COHERENT manpage for msgctl() [Message control operations].
List of available manpages
Index
msgctl() -- General Function (libc) Message control operations #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgctl(id, command, buffer) int id; int command; struct msqid_ds *buffer; The function msgctl() controls the COHERENT's system's messaging facility. This facility permits processes to pass messages from one another. Each message queue is controlled by a structure of type msqid_ds, which is defined in header file <sys/msg.h>. This structure points to the first and last messages in the queue, gives the size of the queue and the number of messages in the queue, and names who can manipulate it and how. The messages themselves consist of a linked list of structures of type msg, which is also defined in msg.h. When the function msgget() creates a message queue, it assigns to that queue an identification number and returns that number to the calling process. For details on this process, see the Lexicon entry for msgget(). id identifies the message queue to be manipulated. This value must have been returned by a call to msgget(). command names the operation that you want msgctl() to perform. msgctl() recognizes the following commands: IPC_STAT Copy the message-queue structure identified by id into the structure pointed to by buffer. This command lets you gather information about a message queue without actually manipulating the queue. IPC_SET This command sets permissions for this queue. It does so by copying fields msg_perm.uid, msg_perm.gid, msg_perm.mode (low nine bits only), and msg_qbytes from the message-queue structure point to by buffer to structure identified by id. Only the superuser root and the user who owns the process that created structure id can execute this command. Note that only the superuser can raise the value of field msg_qbytes, which gives the size of space occupied by the queue, in bytes. IPC_RMID Remove the structure identified by id, and destroy its queue. Only the superuser root and the user who owns the process that created structure id do this. If any of the following conditions occur, msgctl() returns -1 and sets error to the value in parentheses: -> id is not a valid message-queue identifier (EINVAL). -> command is not a valid command (EINVAL). -> command equals IPC_STAT, but the owner of the calling process lacks permission to execute this command (EACCES). -> command equals IPC_RMID or IPC_SET, but the owner of the calling process lacks permission to execute the command (EPERM). -> A process owned by someone other than the superuser root attempted to increase field msg_qbytes (EPERM). -> buffer points to an illegal address (EFAULT). If all went well, msgctl() returns zero. Example For an example of this function, see the Lexicon entry for msgget(). Files /usr/include/sys/ipc.h /usr/include/sys/msg.h See Also libc, msgget(), msgrcv(), msgsnd() Notes For information on other methods of interprocess communication, see the Lexicon entries for semctl(), shmctl(), and libsocket.