MSGCTL(2)

NOM
msgctl - Controler les messages.

SYNOPSIS
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>

int msgctl ( int msqid, int cmd, struct msqid_ds *buf )

DESCRIPTION
Cette fonction permet d'effectuer l'operation indiquee 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 representant la file de messages dans la structure pointee par buf. L'appelant doit avoir des privileges d'acces en lecture sur la file de messages.

IPC_SET
    Ecrire la valeurs de certains champs de la structure msqid_ds pointee par buf dans la structure representant la file de messages, en mettant a jour le champ msg_ctime. Les champs a copier depuis la structure struct msqid_ds pointee 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 etre soit celui du Super-User soit celui du createur ou du proprietaire de la file de messages. Seul le Super-User peut augmenter la valeur de msg_qbytes au-dessus de la constante systeme MSGMNB.

IPC_RMID
    Effacer immediatement la file de messages et ses structures de donnees, en reveillant tous les processus ecrivains et lecteurs en attente. Ils obtiendront un code d'erreur, et errno aura la valeur EIDRM. L'UID effectif du processus appelant doit etre soit celui du Super-User soit celui du createur ou du proprietaire de la file de messages.

VALEUR RENVOYEE
msgctl renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EACCES
    L'argument cmd reclame l'operation IPC_STAT mais le processus appelant n'a pas d'acces en lecture sur la file de messages msqid.

EFAULT
    L'argument cmd reclame l'operation IPC_SET ou IPC_STAT mais buf pointe en dehors de l'espace d'adressage accessible.

EIDRM
    La file de messages a deja ete supprimee.

EINVAL
    cmd ou msqid ont une valeur illegale.

EPERM
    L'argument cmd reclame l'operation IPC_SET ou IPC_RMID mais l'UID effectif du processus appelant n'a pas assez de privileges pour realiser la commande. C'est aussi le cas d'un processus non Super-User tentant d'augmenter msg_qbytes au-dessus de la valeur MSGMNB.

NOTES
Les appels IPC_INFO, MSG_STAT et MSG_INFO sont utilises par le programme ipcs(8) pour fournir des informations sur les ressources allouees dans le futur, ceci peut etre modifie si besoin, ou remplace par une interface avec le systeme de fichiers proc.

CONFORMITE
SVr4, SVID. SVID ne documente pas la condition d'erreur EIDRM.

VOIR AUSSI
ipc(5), msgget(2), msgsnd(2), msgrcv(2).