//------------------------------------------------- // pthread2.c //------------------------------------------------- #include // signal SIGALRM #include // pthread_create pthread_join #include // puts #include // alarm sleep //------------------------------------------------- pthread_t id_cliente, id_servidor; //------------------------------------------------- void manejador_sigusr2(int) { puts("[cliente ]: respuesta recibida"); puts("[cliente ]: petición enviada"); pthread_kill(id_servidor, SIGUSR1); } void *hebra_cliente(void*) { signal(SIGUSR2, manejador_sigusr2); puts("[cliente ]: petición enviada"); pthread_kill(id_servidor, SIGUSR1); while(1) sleep(1); // man 3 sleep... return NULL; } //------------------------------------------------- void manejador_sigusr1(int) { puts("[servidor]: petición recibida"); puts("[servidor]: respuesta enviada"); pthread_kill(id_cliente, SIGUSR2); } //------------------------------------------------- int main() { alarm(1); id_servidor = pthread_self(); signal(SIGUSR1, manejador_sigusr1); pthread_create(&id_cliente , NULL, hebra_cliente , NULL); pthread_join(id_cliente , NULL); } //-------------------------------------------------