next up previous
Next: Função msgctl() Up: Função msgget() Previous: Função msgget()

Como criar uma fila de mensagens

A criação de uma fila de mensagens é similar à criação de um conjunto de semáforos, ou de um segmento de memória compartilhada. As seguintes regras básicas devem ser respeitadas nesse caso:

Note ainda que durante a criação de um fila de mensagens, alguns campos da estrutura msqid_ds são iniciados (proprietário, modos de acesso, data de criação, etc.).

Exemplo:

Exemplo de utilização do msgget(): este programa cria uma fila de mensagens associada à chave 123, e verifica o conteúdo das estruturas do sistema próprias a essa fila.

                 /* arquivo test_msgget.c */
/*
 *  exemplo de utilizacao de msgget()
 */

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

#define KEY 123

int main()
{
  int msqid ;  /* ID da fila de mensagens */
  char *path = "nome_de_arquivo_existente" ;
    /*
     * criacao de uma fila de mensagens para leitura se
     * ela ainda nao existe
     */
     if (( msqid = msgget(ftok(path,(key_t)KEY),
                       IPC_CREAT|IPC_EXCL|0600)) == -1) {
          perror("Erro de msgget") ;
          exit(1) ;
     }
   printf("identificador da fila: %d\n",msqid) ;
   printf("esta fila esta associada a chave unica : %#x\n"
                            ,ftok(path,(key_t)KEY)) ;
   exit(0);
}

Resultado da execução:

euler:~/> test_msgget
identificador da fila: 1152
esta fila esta associada a chave unica : 0x7b045862
euler:~/> ipcs -q

------ Message Queues --------
key       msqid     owner     perms     used-bytes  messages    
0x7b045862 1152      saibel    600       0           0



Celso Alberto Saibel Santos 2000-11-14