| | |
msgctl - Contrôler les messages.
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>
int msgctl ( int msqid, int cmd, struct msqid_ds *buf )
Cette
fonction permet d'effectuer l'opération indiquée par cmd sur la file de
messages ayant l'identificateur msqid. Les valeurs possibles de cmd sont
:
- IPC_STAT
- Copier les informations depuis la structure représentant la
file de messages dans la structure pointée par buf. L'appelant doit avoir
des privilèges d'accès en lecture sur la file de messages.
- IPC_SET
- Ecrire
la valeurs de certains champs de la structure msqid_ds pointée par buf
dans la structure représentant la file de messages, en mettant à jour
le champ msg_ctime. Les champs à copier depuis la structure struct msqid_ds
pointée par buf sont
msg_perm.uid
msg_perm.gid
msg_perm.mode /* 9 bits poids faibles */
msg_qbytes
L'UID effectif du processus appelant doit être soit celui du Super-User
soit celui du créateur ou du proprietaire de la file de messages. Seul
le Super-User peut augmenter la valeur de msg_qbytes au-dessus de la constante
système MSGMNB.
- IPC_RMID
- Effacer immédiatement la file de messages et ses
structures de données, en réveillant tous les processus écrivains et lecteurs
en attente. Ils obtiendront un code d'erreur, et errno aura la valeur EIDRM.
L'UID effectif du processus appelant doit être soit celui du Super-User
soit celui du créateur ou du propriétaire de la file de messages.
msgctl renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas errno
contient le code d'erreur.
- EACCES
- L'argument cmd réclame l'operation
IPC_STAT mais le processus appelant n'a pas d'accès en lecture sur la file
de messages msqid.
- EFAULT
- L'argument cmd réclame l'opération IPC_SET ou IPC_STAT
mais buf pointe en dehors de l'espace d'adressage accessible.
- EIDRM
- La file
de messages a déjà été supprimée.
- EINVAL
- cmd ou msqid ont une valeur illégale.
- EPERM
- L'argument cmd réclame l'opération IPC_SET ou IPC_RMID mais l'UID effectif
du processus appelant n'a pas assez de privilèges pour réaliser la commande.
C'est aussi le cas d'un processus non Super-User tentant d'augmenter msg_qbytes
au-dessus de la valeur MSGMNB.
Les appels IPC_INFO, MSG_STAT et MSG_INFO
sont utilisés par le programme ipcs(8)
pour fournir des informations sur
les ressources allouées dans le futur, ceci peut être modifié si besoin,
ou remplacé par une interface avec le système de fichiers proc.
SVr4,
SVID. SVID ne documente pas la condition d'erreur EIDRM.
ipc(5)
,
msgget(2)
, msgsnd(2)
, msgrcv(2)
.
Christophe Blaess, 1997.
Table des matières
© 1996-2000 Adaptation française "Christophe Blaess"
| |