/* 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:~/>