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)