¿Hay alguna diferencia entre "código listado 1" y "código listado 2"? Debido a que en el Listado de Código 1, el proceso secundario es capaz de atrapar la señal SIGTERM y salir muy bien. Pero la lista de códigos 2 está terminando abruptamente en la señal SIGTERM.señal de llamada después de la horquilla
estoy usando Linux y C.
Listado de Código 1
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
pid = fork();
Listado de Código 2
pid = fork();
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
La parte extraña es que en Listado de Código 2, los procesos hijo y principal configuran el controlador de señal para SIGTERM. Entonces, se supone que esto debe funcionar. ¿No es así?
Lo acabo de probar, funciona bien para mí. Ambos procesos salen graciosamente a través de la llamada a stopChild() en ambos casos. –
¿Está por casualidad llamando a fork() desde dentro de un hilo? –
¿Puede proporcionar un programa de ejemplo completo que muestre el comportamiento? – wich