table of contents
MSGCTL(2) | Manual del Programador de Linux | MSGCTL(2) |
NOMBRE¶
msgctl - operaciones para el control de mensajesSINOPSIS¶
nf #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>int msgctl(int msqid, int cmd, struct msqid_ds *buf);
DESCRIPCIÓN¶
Esta función ejecuta la operación especificada por cmd en la cola de mensajes con el identificador msqid. Valores legales para cmd son:- IPC_STAT
- Copia información desde la estructura de datos mensaje asociada con msqid en la estructura apuntada por buf. El invocador 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 siguientes miembros de la
estructura pueden ser actualizados:
msg_perm.uid msg_perm.gid msg_perm.mode /* solo los 9 bits más bajos */ msg_qbytes
El proceso invocador debe tener los privilegios adecuados (probablemente, root) o su identificador de usuario efectivo debe ser aquel del creador (msg_perm.cuid) o del propietario (msg_perm.uid) de la cola de mensajes. Se requieres privilegios adecuados (probablemente, root) para superar el valor msg_qbytes por encima del valor del sistema MSGMNB.
- IPC_RMID
- Elimina la cola de mensajes y sus estructuras de datos asociadas despertando a todos los procesos en espera de lectura o escritura (devolviendo un valor de error y asignando a errno el valor EIDRM). El proceso invocador debe tener los privilegios adecuados (probablemente, root) o su identificador de usuario efectivo debe ser aquel del creador o del propietario de la cola de mensajes.
VALOR DEVUELTO¶
Si ha funcionado, el valor devuelto sera 0, en otro caso -1 con errno indicando el errorERRORES¶
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 dirección 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 proceso invocador no tiene suficientes privilegios para ejecutar la orden.
OBSERVACIONES¶
Las llamadas IPC_INFO, MSG_STAT y MSG_INFO son utilizadas por el programa ipcs(8) a fin de proporcionar información de los recursos asignados. En el futuro esto puede ser modificado segun las necesitades o trasladado al interfaz /proc.Varios campos de la estructura msqid_ds eran de tipo entero corto bajo Linux 2.2 y se convirtieron a enteros largos bajo Linux 2.4. Para sacar provecho de ésto, una recompilación bajo glibc-2.1.91 o una versión posterior debería bastar. (El núcleo distingue las llamadas antiguas de las nuevas por una bandera IPC_64 en cmd.)
CONFORME A¶
SVr4, SVID. SVID no documenta el error EIDRM.VÉASE TAMBIÉN¶
ipc(5), msgget(2), msgsnd(2), msgrcv(2)18 febrero 2001 | Linux 2.4.1 |