| Rev | Author | # | Line |
|---|---|---|---|
| 1 | perry | 1 | !!NAME |
| 2 | msgctl - message control operations | ||
| 3 | !!SYNOPSIS | ||
| 2 | PerryLorier | 4 | __#include <sys/types.h>__ |
| 5 | __#include <sys/ipc.h>__ | ||
| 6 | __#include <sys/msg.h>__ | ||
| 1 | perry | 7 | |
| 2 | PerryLorier | 8 | __int msgctl ( int__ ''msqid''__, int__ ''cmd''__, struct msqid_ds *__''buf'' __)__ |
| 1 | perry | 9 | |
| 10 | !!DESCRIPTION | ||
| 2 | PerryLorier | 11 | The function performs the control operation specified by ''cmd'' on the message queue with identifier ''msqid''. Legal values for ''cmd'' are: |
| 12 | ;__IPC_STAT__: Copy info from the message queue data structure into the structure pointed to by ''buf''. The user must have read access privileges on the message queue. | ||
| 13 | ;__IPC_SET__: Write the values of some members of the __msqid_ds__ structure pointed to by ''buf'' to the message queue data structure, updating also its __msg_ctime__ member. Considered members from the user supplied __struct msqid_ds__ pointed to by ''buf'' are | ||
| 14 | ;:__msg_perm.uid__ | ||
| 15 | ;:__msg_perm.gid__ | ||
| 16 | ;:__msg_perm.mode__ /* only lowest 9-bits */ | ||
| 17 | ;:__msg_qbytes__ | ||
| 18 | ;:The calling process effective user-ID must be one among super-user, creator or owner of the message queue. Only the super-user can raise the __msg_qbytes__ value beyond the system parameter __MSGMNB__. | ||
| 1 | perry | 19 | |
| 2 | PerryLorier | 20 | ;__IPC_RMID__: Remove immediately the message queue and its data structures awakening all waiting reader and writer processes (with an error return and __errno__ set to [EIDRM]). The calling process effective user-ID must be one among super-user, creator or owner of the message queue. |
| 1 | perry | 21 | |
| 22 | !!RETURN VALUE | ||
| 2 | PerryLorier | 23 | If successful, the return value will be __0__, otherwise __-1__ with __errno__ indicating the error. |
| 1 | perry | 24 | |
| 25 | !!ERRORS | ||
| 2 | PerryLorier | 26 | For a failing return, __errno__ will be set to one among the following values: |
| 27 | ;[EACCES]: The argument ''cmd'' is equal to __IPC_STAT__ but the calling process has no read access permissions on the message queue ''msqid''. | ||
| 28 | ;[EFAULT]: The argument ''cmd'' has value __IPC_SET__ or __IPC_STAT__ but the address pointed to by ''buf'' isn't accessible. | ||
| 29 | ;[EIDRM]: The message queue was removed. | ||
| 30 | ;[EINVAL]: Invalid value for ''cmd'' or ''msqid''. | ||
| 31 | ;[EPERM]: The argument ''cmd'' has value __IPC_SET__ or __IPC_RMID__ but the calling process effective user-ID has insufficient privileges to execute the command. Note | ||
| 32 | this is also the case of a non super-user process trying to increase the __msg_qbytes__ value beyond the value specified by the system parameter __MSGMNB__. | ||
| 1 | perry | 33 | |
| 34 | !!NOTES | ||
| 2 | PerryLorier | 35 | The __IPC_INFO__, __MSG_STAT__ and __MSG_INFO__ control calls are used by the ipcs(8) program to provide information on allocated resources. In the future these can be modified as needed or moved to a proc file system interface. |
| 1 | perry | 36 | |
| 2 | PerryLorier | 37 | Various fields in a ''struct msqid_ds'' were shorts under Linux 2.2 and have become longs under Linux 2.4. To take advantage of this, a recompilation under glibc-2.1.91 or later should suffice. (The kernel distinguishes old and new calls by a IPC_64 flag in ''cmd''.) |
| 1 | perry | 38 | |
| 39 | !!CONFORMING TO | ||
| 2 | PerryLorier | 40 | SVr4, SVID. SVID does not document the [EIDRM] error condition. |
| 1 | perry | 41 | |
| 42 | !!SEE ALSO | ||
| 2 | PerryLorier | 43 | ipc(5), msgget(2), msgsnd(2), msgrcv(2) |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 8 times)