Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Colas de Mensajes

Estas en el tema de Colas de Mensajes en el foro de C/C++ en Foros del Web. Gente estoy probando las colas de mensajes para desp comunicar procesos. La cosa que me pasa es que primero mando un mensaje de tipo 1 ...
  #1 (permalink)  
Antiguo 20/09/2010, 18:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 17 años, 10 meses
Puntos: 0
Colas de Mensajes

Gente estoy probando las colas de mensajes para desp comunicar procesos.
La cosa que me pasa es que primero mando un mensaje de tipo 1 y desp mando uno de tipo 2.
Y despues quiero recuperar ese mensaje de tipo 1 y me devuelve el mensaje de tipo 2.
que puede estar pasando??




#include <stdio.h>
#include <stdlib.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>


typedef struct
{
long tipo_mensaje;
char Mensaje[30];
}Mi_Tipo_Mensaje;



int main(){

Mi_Tipo_Mensaje Un_Mensaje;
key_t Clave1;
int Id_Cola_Mensajes;
//Ahora creamos la cola de mensajes
Clave1 = ftok("/bin/ls", 34); //Coordinar numero que mandamos
if (Clave1 == (key_t)-1)
{
printf("Error al obtener clave para cola mensajes");
exit(-1);
}

Id_Cola_Mensajes == msgget(Clave1,0600 | IPC_CREAT);

if (Id_Cola_Mensajes == -1)
{
printf("Error al obtener identificador para cola mensajes");
exit (-1);
}

strcpy(Un_Mensaje.Mensaje,"mensaje1");
Un_Mensaje.tipo_mensaje = 1;

msgsnd(Id_Cola_Mensajes,(struct msgbuf *)&Un_Mensaje,(sizeof(Un_Mensaje.Mensaje)),0);



strcpy(Un_Mensaje.Mensaje,"mensaje2");
Un_Mensaje.tipo_mensaje = 2;

msgsnd(Id_Cola_Mensajes,(struct msgbuf *)&Un_Mensaje,(sizeof(Un_Mensaje.Mensaje)),0);



msgrcv (Id_Cola_Mensajes, (struct msgbuf *)&Un_Mensaje,sizeof(Un_Mensaje.Mensaje),1, 0);
printf("%s",Un_Mensaje.Mensaje);
return 1;
}

Etiquetas: mensajes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:41.