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)