Teste

Disponível somente no TrabalhosFeitos
  • Páginas : 4 (994 palavras )
  • Download(s) : 0
  • Publicado : 20 de dezembro de 2012
Ler documento completo
Amostra do texto
Página 1 de 5

INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA
Sistemas Operativos ETI - IGE

2º Semestre 2003/2004

Aula 04

Filas de mensagem

1. Criar uma fila de mensagens.Mandar uma mensagem.
Os procedimentos para filas de mensagens são em parte semelhantes aos dos semáforos. Para criar uma fila de mensagens usase a função msgget, como se exemplifica no seguinte programaque também envia uma mensagem para a fila criada. Para enviar uma mensagem usa-se a função msgsnd. O primeiro argumento é, obviamente, o id obtido de msgget. O segundo argumento é a mensagempropriamente dita, o terceiro argumento é o tamanho da mensagem e o último argumento é, normalmente, 0 (mas adiante veremos outras hipóteses). Sobre a mensagem, a regra é que deve existir um campo int(designado de "tipo" da mensagem) antes da mensagem propriamente dita. Dentro desta regra, é o programa que define a estrutura das mensagens. Neste caso foi definida uma estrutura MsgStruct que prevêmensagens contendo, no máximo, 250 caracteres.

#include #include #include typedef struct { int type; char text[250]; } MsgStruct; main() { int msg_id; int status; MsgStruct msg; // ligar à fila demensagens msg_id = msgget ( 1000, 0600 | IPC_CREAT ); exit_on_error (msg_id, "Criação/Ligação"); // enviar ums mensagem msg.type = 1; strcpy( msg.text, "Uma mensagem qualquer."); status = msgsnd( msg_id,&msg, sizeof(msg.text), 0); exit_on_error (msg_id, "Envio"); printf ("Mensagem enviada!\n"); }

2. Comandos
O comando ipcs -m (ou só ipcs) permite ver as filas de mensagens criadas. Pode também,nessa lista, ver o número de mensagens actualmente em espera na fila.

3. Receber uma mensagem.
O seguinte programa recebe (receber, neste contexto, quer dizer retirar) uma mensagem da fila. A únicadiferença sensível é que,

file://C:\DOCUME~1\THIAGO~1\CONFIG~1\Temp\VOM29K58.htm

5/9/2005

Página 2 de 5

em vez de msgsnd para mandar uma mensagem, temos a função msgrcv para receber....
tracking img