Provided by: manpages-es_1.55-10_all bug

NOMBRE

       msgget - devuelve el identificador para una cola de mensajes

SINOPSIS

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

       int msgget(key_t key, int msgflg);

DESCRIPCIÓN

       La  función  devuelve el identificador de la cola de mensajes asociada a key.  Se crea una
       nueva cola de mensajes si key tiene el valor IPC_PRIVATE, o si key no es IPC_PRIVATE  pero
       no  existe ninguna cola de mensajes asociada a key, y IPC_CREAT se inserta en msgflg (esto
       es, msgflg&IPC_CREAT es distinto de cero).  La presencia en msgflg de los campos IPC_CREAT
       y IPC_EXCL desempeñan el mismo papel, con respecto a la existencia de la cola de mensajes,
       que O_CREAT y O_EXCL en el argumento "mode" de la llamada al sistema open(2), es decir, la
       función  msgget  falla  si  msgflg  inserta  IPC_CREAT  y IPC_EXCL y ya esiste una cola de
       mensajes para key.

       En la creación, los 9 bits más bajos del argumento msgflg definen los permisos de acceso a
       la  cola  de mensajes.  Estos bits para los permisos tienen la misma forma y semántica que
       los de los permisos de acceso en las llamadas al sistema open(2) o creat(2) (Los  permisos
       de ejecución no son usados.)

       Si  se  crea una nueva cola de mensajes, la llamada al sistema inicializa la estructura de
       datos del sistema para la cola msqid_ds como se muestra:

              msg_perm.cuid y msg_perm.uid son fijados al identificador del usuario efectivo  del
              proceso invocador.

              msg_perm.cgid  y  msg_perm.gid  son  fijados al identificador de grupo efectivo del
              proveso invocador.

              Los 9 bits más bajo de msg_perm.mode son fijados a los 9 bits más bajos de msgflg.

              msg_qnum, msg_lspid, msg_lrpid, msg_stime y msg_rtime son puestos a 0.

              msg_ctime contendrá la hora actual

              msg_qbytes será igual al límite impuesto por el sistema MSGMNB.

       Si la cola de mensajes ya existe, se verifican los permisos de acceso, y ser  realiza  una
       comprobación a fin de verificar si está marcada para su destrucción.

VALOR DEVUELTO

       Si  ha  funcionado  correctamente,  devuelve  el  idenficador para la cola de mensajes (un
       entero no negativo), en otro caso -1 con errno indicando el error.

ERRORES

       En caso de error, errno tendrá uno de los siguientes valores:

       EACCES     Existe una cola de mensajes para key, pero  el  proceso  no  tiene  permiso  de
                  acceso a la cola.

       EEXIST     Existe una cola de mensajes para key y msgflg contiene IPC_CREAT y IPC_EXCL.

       ENOENT     No existe una cola de mensajes para key y msgflg no contiene IPC_CREAT.

       ENOMEM     Una  cola  de  mensajes ha de ser creada pero el sistema no contiene suficiente
                  memoria para la nueva estructura de datos.

       ENOSPC     Una cola de mensajes ha de ser creada pero el límite del sistema para el máximo
                  número de colas de mensajes (MSGMNI) será superado.

OBSERVACIONES

       IPC_PRIVATE  no es un campo de tipo bandera, es del tipo key_t.  Si este valor especial es
       utilizado por key, la llamada al sistema ignorará todo excepto los 9 bits de  menor  orden
       de msgflg y crea una nueva cola de mensajes (si ha funcionado).

       Lo siguiente es una limitación en los recursos del sistema que afecta a la llamada msgget

       MSGMNI     Número  máximo  de  colas  de mensajes soportadas por el sistema: depende de la
                  política tomada.

FALLOS

       La elección del nombre IPC_PRIVATE puede que fuera desafortunada,  IPC_NEW  mostraría  más
       claramente su función.

CONFORME A

       SVr4,  SVID.   Hasta la versión 2.3.20 Linux devolvía EIDRM cuando se llamaba a msgget con
       una cola de mensajes planificada para ser borrada.

VÉASE TAMBIÉN

       ftok(3), ipc(5), msgctl(2), msgsnd(2), msgrcv(2)