#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 */ if (argc!=2) { printf("Uso: escribe valor\n"); exit(1); } /* 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=ESCRIBE; mensaje.dato=atoi(argv[1]); mensaje.peticion_servida=peticion_servida; canal = open(CANAL,O_WRONLY); /* Garantiza la exclusión mutua en el acceso al fichero */ sem_P(bloquea_fichero); /* Escribe el mensaje en el fichero */ write(canal,&mensaje,sizeof(struct Mensaje)); /* 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 */ close(canal); borra_sem(peticion_servida); }