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;
}