C'è qualche differenza tra "elenco di codici 1" e "elenco di codici 2"? Perché nel Codice 1, il processo figlio è in grado di catturare il segnale SIGTERM ed uscire piacevolmente. Ma il codice listng 2 termina bruscamente sul segnale SIGTERM.segnale di chiamata dopo la forcella
Sto usando Linux e C.
Codice 1
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
pid = fork();
Codice 2
pid = fork();
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
La parte strana è che nel Codice 2, il processo figlio e genitore imposta il gestore di segnale per SIGTERM. Quindi, dovrebbe funzionare. Non è vero?
L'ho appena testato, funziona bene per me. Entrambi i processi escono con garbo tramite la chiamata stopChild() in entrambi i casi. –
Sei per caso chiamando fork() da una discussione? –
Potete fornire un programma di esempio completo che mostri il comportamento? – wich