|
|||||||
|
|
MSGOPSection: Manual del Programador de Linux (2)Updated: 22 octubre 1996 Index Return to Main Contents NOMBREmsgop - operaciones con mensajesSINOPSIS# include <sys/types.h> int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg ) int msgrcv ( int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg ) DESCRIPCIÓNPara enviar o recibir un mensaje, el proceso llamador aloja una estructura como la siguiente:
struct msgbuf {
pero con un vector El proceso llamador debe tener permiso de acceso de escritura para enviar, y de lectura para recibir un mensaje en la cola. La llamada al sistema msgsnd encola una copia del mensaje apuntado por el argumento msgp en la cola de mensaje cuyo identificador se especifica por el valor del argumento msqid. El argumento msgflg especifica el comportamiento de la llamada al sistema si el poner en la cola el nuevo mensaje necesitara más de msg_q bytes en la cola. Si IPC_NOWAIT está definido, el mensaje no será enviado y la llamada al sistema falla regresando con el valor EAGAIN puesto en errno. De otro modo, el proceso se suspende hasta que la condición de la suspensión deje de existir (en cuyo caso el mensaje es enviado y la llamada al sistema acaba con éxito), o la cola se borra (en cuyo caso la llamada al sistema falla con el valor EIDRM en errno), o el proceso recibe una señal que ha de ser capturada (en cuyo caso la llamada al sistema falla con EINTR en errno). Tras la terminación con éxito de la llamada, la estructura de datos de la cola de mensajes se actualiza como sigue:
La llamada al sistema msgrcv lee un mensaje de la cola de mensajes especificada por msqid y lo guarda en la estructura msgbuf apuntada por el argumento msgp, borrando de la cola, en caso de éxito, el mensaje leído. El argumento msgsz especifica el tamaño máximo en bytes para el miembro mtext de la estructura apuntada por el argumento msgp. Si el texto del mensaje tiene una longitud mayor de msgsz, entonces si el argumento msgflg contiene MSG_NOERROR, el texto del mensaje se truncará (y la parte truncada se perderá), y si no, el mensaje no se borra de la cola y la llamada al sistema falla regresando y poniendo el valor E2BIG en errno. El argumento msgtyp especifica el tipo de mensaje pedido como se muestra a continuación:
El argumento msgflg continene ninguna, una o más (engarzándolas con el operador OR) de entre las siguientes opciones:
Si no hay disponible un mensaje del tipo pedido e IPC_NOWAIT no está contenido en msgflg, el proceso llamador se bloquea hasta que ocurra una de las siguientes condiciones:
Tras la terminación con éxito, la estructura de datos de la cola de mensajes se actualiza como sigue:
VALOR DEVUELTOEn caso de fallo ambas funciones devuelven -1 con errno indicando el error, en caso contrario msgsnd devuelve 0 y msgrvc devuelve el número de bytes realmente copiados en el vector mtext.ERRORESSi msgsnd falla, cuando la función regresa, errno cogerá uno de entre los siguientes valores:
Si msgrcv falla, cuando la función regresa, errno tomará uno de entre los valores siguientes:
OBSERVACIONESLos siguientes son límites del sistema que afectan a la llamada al sistema msgsnd :
La implementación no tiene límites intrínsecos para el número máximo, del sistema, de cabeceras de mensaje (MSGTQL) ni para el tamaño máximo, del sistema, en bytes, de la zona común de mensajes (MSGPOOL). CONFORME ASVr4, SVID.VÉASE TAMBIÉNipc(5), msgctl(2), msgget(2), msgrcv(2), msgsnd(2)
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |