void* signal_catcher(void *c)
{
    int    sig;
    int    err;
addSignalHandlerName();
print_debug("Signal catcher created.");
    while(1)
    {
        print_debug("Waiting for a signal...");
        err=sigwait ( &sigwait_signal_set, &sig );

        print_debug_variable("Signal received!.",(err|| sig));
    //    if ((err || sig != SIGINT) && (err || sig !=SIGUSR1))
     //   abort();
        if (err || sig ==SIGINT)
            break;
        if (err || sig ==SIGUSR1)
        {
            last_signal=SIGUSR1;
            counting_sem_signal(access_controller);
        }


    }
     //ya es SIGINT. notificamos y nos vamos
    last_signal=SIGINT;
    counting_sem_signal(access_controller);



    return NULL;
}
void* server_thread(void* ptr) {
	message_t* msg;

	// Setup our pointer to the mailbox (it was created by main)
	mbox = (sys_mbox_t*) ptr;

	// Mark server as running
	serv_up = 1;
	
	// Sequence for pseudo-random numbers
	srand(0);
		
	// Server must wait for a message in the mailbox,
	// execute the desired command and write the result back in the message
	while (server_is_up()) {
		 msg=(void*) mbox_fetch(mbox);
		switch (msg->tipo) {
			case RANDOM:
				if ( execute_random_service(msg) != 0) {
					fprintf(stderr,"ERROR when executing RANDOM action\n");
				}
				break;
			case TIME:
				if (excute_time_service(msg) != 0) {
					fprintf(stderr,"ERROR when executing TIME action\n");
				}
				break;
			case NONE:
				fprintf(logfile,"Server. NONE message received. Doing nothing\n");
			default:
				break;
		}
		
		// Signal client. Operation done
		counting_sem_signal(msg->op_completed);
	
	}
	
	// Server must shutdown
	fprintf(logfile,"\n....Server is down...\n");
	pthread_exit(NULL);
}