Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/04/2016, 03:09
dmitri
 
Fecha de Ingreso: abril-2016
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Envío de mensajes

Hola, estoy creando un programa en el que dos coches deben moverse sobre un mapa. Cada proceso debe enviar un mensaje de tipo 1 y quedarse bloqueado hasta recibir un mensaje de tipo 2. Solo consigo que me salga el primer coche. ¿Cómo podría solucionarlo? Gracias.

Código:
struct mensaje
{
   long tipo;
   int  x, y;
};

int main()
{
   struct mensaje m[2];
   pid_t p[2];
   
   for(i=0; i<2; i++)
   {
      if(p[i])
     {
        for(;;)
        {
            moverCoche(m, i);
        }
      }
   }
   
   return 0;
}

void moverCoche(struct mensaje *m, i)
{
   m[i].tipo = 1;
   m[i].x = 0;
   m[i].y = 0;
   
   if(msgsnd(buzon, &m[i], sizeof(m[i])-sizeof(long), IPC_NOWAIT) == -1)
   {
      exit(EXIT_FAILURE);
   }
   
   if(msgrcv(buzon, &m[i], sizeof(m[i]), 0, MSG_NOERROR) == -1)
   {
      exit(EXIT_FAILURE);
   }
}