#include "mensaje.h" #include #include main(int argc,char* argv[]) { struct Mensaje mensaje; /* Búfer para el mensaje */ int canal; /* Fichero de comunicación */ int peticion_servida; /* Semáforo local al cliente */ /* Abre los semáforos */ peticion_pendiente = abre_sem(CLAVE_PP); bloquea_fichero = abre_sem(CLAVE_BF); peticion_servida = crea_sem(0); /* Prepara el mensaje */ mensaje.tipo=TERMINA; mensaje.peticion_servida=peticion_servida; /* Garantiza la exclusión mutua en el acceso al fichero */ sem_P(bloquea_fichero); /* Escribe el mensaje en el fichero */ canal = open(CANAL,O_WRONLY); write(canal,&mensaje,sizeof(struct Mensaje)); close(canal); /* Avisa al servidor de que hay una petición */ sem_V(peticion_pendiente); /* Espera a que el servidor notifique que se ha atendido */ sem_P(peticion_servida); /* Cierra el fichero y destruye el semáforo */ borra_sem(peticion_servida); }