next up previous
Next: Comunicação entre processos Up: Processos manipulando sinais: Exemplos Previous: Processos manipulando sinais: Exemplos

Herança de sinais com fork()

Os processos filhos recebem a imagem da memória do pai, herdando seu comportamento em relação aos sinais. O próximo exemplo descreve este fenômeno:

                 /* arquivo test_sign_fork.c */

/* heranca pelo filho do comportamento do pai
 * em relacao aos sinais */

#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void fin()
{
     printf("SIGINT para os processos %d\n",getpid()) ;
     exit(0) ;
}

int main()
{
     signal(SIGQUIT,SIG_IGN) ;
     signal(SIGINT,fin) ;
     if (fork()>0){
          printf("processo pai : %d\n",getpid()) ;
          while(1) ;
     }
     else {
          printf("processo filho : %d\n",getpid()) ;
          while(1) ;
     }
     exit(0);
}

Resultado da execução:

euler:~/> test_sign_fork
processo pai : 1736
processo filho : 1737
SIGINT para os processos 1737
SIGINT para os processos 1736
euler:~/>



Celso Alberto Saibel Santos 2000-11-14