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'ON

       La  funcion 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 desempenan 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 funcion
       msgget  falla  si  msgflg  inserta IPC_CREAT y IPC_EXCL y ya esiste una
       cola de mensajes para key.

       En la creacion, los 9 bits mas bajos del argumento msgflg  definen  los
       permisos de acceso a la cola de mensajes.  Estos bits para los permisos
       tienen la misma forma y semantica que los de los permisos de acceso  en
       las  llamadas  al sistema open(2) o creat(2) (Los permisos de ejecucion
       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 mas bajo de msg_perm.mode son fijados a  los  9  bits
              mas bajos de msgflg.

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

              msg_ctime contendra la hora actual

              msg_qbytes sera igual al limite impuesto por el sistema MSGMNB.

       Si la cola de mensajes ya existe, se verifican los permisos de  acceso,
       y  ser realiza una comprobacion a fin de verificar si esta marcada para
       su destruccion.

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 tendra 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 limite del
                  sistema para el maximo numero de colas de mensajes  (MSGMNI)
                  sera 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  ignorara
       todo  excepto los 9 bits de menor orden de msgflg y crea una nueva cola
       de mensajes (si ha funcionado).

       Lo siguiente es una limitacion en los recursos del sistema que afecta a
       la llamada msgget

       MSGMNI     Numero  maximo  de  colas  de  mensajes  soportadas  por  el
                  sistema: depende de la politica tomada.

FALLOS

       La eleccion del  nombre  IPC_PRIVATE  puede  que  fuera  desafortunada,
       IPC_NEW mostraria mas claramente su funcion.

CONFORME A

       SVr4,  SVID.   Hasta  la  version 2.3.20 Linux devolvia EIDRM cuando se
       llamaba a msgget con una cola de mensajes planificada para ser borrada.

V'EASE TAMBI'EN

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