Guarda ti faccio vedere a me cosa succede.Originariamente inviato da rictato
La kill uccide anche il padre!!! anche se si toglie la exit(0) nell'handler catturaINT, mandandolo in esecuzione il processo F avrà come padre il processo 1 alias il processo init
Se NON commento exit(0) alla fine di catturaINT (cioè in pratica se lascio il codice così come lo hai scritto), l'output è questo
che mi sembra coerente con il programma che hai scritto, cioè ricevuto il segnale SIGINT il processo F ammazza suo figlio (N) e poi termina regolarmente con eixt(0). Il padre di F (P) riceve lo stato di terminazione 0 del figlio F (di cui attendeva la terminazione con wait()) e stampa "Il figlio termina regolarmente con stato 0"codice:YuYevon@slackware:~$ ./segnale Sono il nipote di P figlio di F=3893 e mi chiamo N=3894 Sono F=3893 e figlio di P=3892 Sono F=3893 e figlio di P=3892 Sono il nipote di P figlio di F=3893 e mi chiamo N=3894 Sono F=3893 e figlio di P=3892 Sono il nipote di P figlio di F=3893 e mi chiamo N=3894 #a questo punto invio il segnale SIGINT al processo 3893 da un'altra shell... Segnale catturato Uccidero' 3894 Kill eseguito con successo Il figlio termina regolarmente con stato 0
Se invece commento la exit(0), il processo F ammazzerà N una volta ricevuto il segnale SIGINT e però poi né lui né P vengono interrotti, e infatti la loro esecuzione continua (o per meglio dire continua F e P ne attende la terminazione)
codice:YuYevon@slackware:~$ ./segnale Sono il nipote di P figlio di F=3983 e mi chiamo N=3984 Sono F=3983 e figlio di P=3982 Sono il nipote di P figlio di F=3983 e mi chiamo N=3984 Sono F=3983 e figlio di P=3982 Sono il nipote di P figlio di F=3983 e mi chiamo N=3984 Sono F=3983 e figlio di P=3982 Sono il nipote di P figlio di F=3983 e mi chiamo N=3984 Sono F=3983 e figlio di P=3982 #a questo punto invio il segnale SIGINT al processo 3983 da un'altra shell... Segnale catturato Uccidero' 3984 Kill eseguito con successo Sono F=3983 e figlio di P=3982 Sono F=3983 e figlio di P=3982 Sono F=3983 e figlio di P=3982 Sono F=3983 e figlio di P=3982

Rispondi quotando