|
| msgctl - message control operations |
SYNOPSIS
|
#include <sys/msg.h> int msgctl(int msqid, int cmd, struct msqid_ds *buf); |
|
The msgctl() function provides a variety of message control operations as specified by cmd. The following cmds are available:
-
IPC_STAT
- Place the current value of each member of the data structure associated
with msqid into the structure pointed to by buf. The contents of this structure are defined in intro(2).
-
IPC_SET
- Set the value of the following members of the data structure associated with msqid to the
corresponding value found in the structure pointed to by buf:
|
msg_perm.uid
msg_perm.gid
msg_perm.mode /* access permission bits only */
msg_qbytes
|
This cmd can only be executed by a process that has an effective user ID equal to either that of super-user, or to the value of msg_perm.cuid or msg_perm.uid in the data structure associated with msqid. Only super-user can raise the value of msg_qbytes.
-
IPC_RMID
- Remove the message queue identifier specified by msqid from the system and destroy the
message queue and data structure associated with it. This cmd can only be executed by a process that has an effective user ID equal to either that
of super-user, or to the value of msg_perm.cuid or msg_perm.uid in the data structure associated with msqid. The buf
argument is ignored.
|
|
Upon successful completion, msgctl() returns 0. Otherwise, it returns -1 and sets errno to indicate the error.
|
|
The msgctl() function will fail if:
-
EACCES
- The cmd argument is IPC_STAT
and operation permission is denied to the calling process (see intro(2)).
-
EFAULT
- The buf argument points to an illegal address.
-
EINVAL
- The msqid argument is not a valid message queue identifier; or the cmd argument is not
a valid command or is IPC_SET and msg_perm.uid or msg_perm.gid is not valid.
-
EPERM
- The cmd argument is IPC_RMID or IPC_SET and the
effective user ID of the calling process is not super-user and is not equal to the value of msg_perm.cuid or msg_perm.uid in the data structure associated with msqid.
-
EPERM
- The cmd argument is IPC_SET, an attempt is being made to increase
to the value of msg_qbytes, and the effective user ID of the calling process is not super-user.
-
EOVERFLOW
- The cmd argument is IPC_STAT and uid or gid is too large to be stored in the structure pointed to by buf.
|
| |