MSGCTL(2)

NOMBRE
msgctl - operaciones para el control de mensajes

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

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

DESCRIPCION
La funcion ejecuta la operacion especificada por cmd en la cola de mensajes con el identificador msqid. Valores legales para cmd son:

IPC_STAT
    Copia informacion desde la estructura de datos mensaje en la estructura apuntada por buf. El usuario debe tener permiso de lectura en la cola de mensajes.

IPC_SET
    Escribe los valores de algunos miembros de la estructura msqid_ds apuntada por buf a la estructura de datos cola de mensajes, actualizando su componente msg_ctime Los componentes considerados de la estructura del usuario struct msqid_ds apuntados por buf son

    	msg_perm.uid
    	msg_perm.gid
    	msg_perm.mode	/* solo los 9 bits mas bajos */
    	msg_qbytes

    El identificador de usuario del proceso debe ser al menos super-usuario, creador o propietario de la cola de mensajes. Solo de super-usuario puede superar el valor msg_qbytes por encima del valor del sistema MSGMNB.

IPC_RMID
    Elimina la cola de mensajes y sus estructuras de datos despertando a todos los procesos en espera de lectura o escritura (con un valor de error retornado y errno fijado a EIDRM). El identificador de usuario del proceso invocador debe ser al menos super-usuario, creador o propietario de la cola de mensajes.

VALOR DEVUELTO
Si ha funcionado, el valor devuelto sera 0, en otro caso -1 con errno indicando el error

ERRORES
Ante un error errno sera fijado a uno de los siguientes valores:

EACCES
    El argumento cmd es igual a IPC_STAT pero el proceso invocador no tiene permisos de lectura sobre la cola de mensajes msqid.

EFAULT
    El argumento cmd tiene el valor IPC_SET o IPC_STAT pero la direccion apuntada por buf no es accesible.

EIDRM
    La cola de mensajes ha sido eliminada.

EINVAL
    Valor incorrecto de cmd o msqid.

EPERM
    El argumento cmd tiene el valor IPC_SET o IPC_RMID pero el identificador de usuario efectivo del proceso no tiene suficientes privilegios para ejecutar el comando. Este tambien es el caso para un proceso no perteneciente al super-usuario intentando incrementar el valor de msg_qbytes por encima del valor espeficicado por el parametro del sistema MSGMNB.

NOTAS
Las llamadas IPC_INFO, MSG_STAT y MSG_INFO son utilizadas por el programa ipcs(8) a fin de proveer informacion de los recursos asignados. En el futuro esto puede ser modificado segun las necesitades o trasladado al interfaz /proc.

COMPATIBLE CON
SVr4, SVID. SVID no documenta el error EIDRM.

VER TAMBIÉN
ipc(5), msgget(2), msgsnd(2), msgrcv(2).