home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / GianuzziV / SO1 / signal2.c < prev    next >
Text File  |  2005-01-31  |  764b  |  33 lines

  1. #define SIGN 020
  2. int  status, num=0, pp;
  3. /* signal2.c
  4.    Funzionamento su OSF: la signal e' effettuata una sola volta
  5.    e vale per piu' segnali;
  6.    Attenzione: su Minix la signal va fatta ogni volta che si
  7.    vuole intercettare un signal. */
  8.  
  9. void  intr(numsig)
  10. int numsig;
  11.       { printf("ricevuto %o \n", numsig);
  12.         num++;
  13.         }
  14. main ()
  15. {  int  pid;
  16.    pid = getpid();
  17.    signal (SIGN, intr);
  18.    if ((pp=fork()) < 0) {perror("errore"); exit();}
  19.    if (pp == 0)
  20.      { kill(pid, SIGN); /* attenzione invertito su Minix */
  21.        sleep(2);
  22.        kill(pid, SIGN);
  23.        exit(1);   }
  24.     /* padre */
  25.     else {
  26.       while (num != 2) ;
  27.       wait(&status);
  28.       printf("numero interruzioni %d   stato figlio %x \n", num, status);
  29.       exit(0);
  30.   }
  31. }
  32.  
  33.