Provided by: manpages-es_1.55-8_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)