Commentato il codice del server echo basato sulla funzione poll.
[gapil.git] / listati / sleep_danger.c
1 void alarm_hand(int sig) {
2     /* check if the signal is the right one */
3     if (sig != SIGALRM) { /* if not exit with error */
4         printf("Something wrong, handler for SIGALRM\n");
5         exit(1);
6     } else {    /* do nothing, just interrupt pause */
7         return;
8     }
9 }
10 unsigned int sleep(unsigned int seconds)
11 {
12     sighandler_t prev_handler;
13     /* install and check new handler */
14     if ((prev_handler = signal(SIGALRM, alarm_hand)) == SIG_ERR) {
15         printf("Cannot set handler for alarm\n"); 
16         exit(-1);
17     }
18     /* set alarm and go to sleep */
19     alarm(seconds); 
20     pause(); 
21     /* restore previous signal handler */
22     signal(SIGALRM, prev_handler);
23     /* return remaining time */
24     return alarm(0);
25 }