Есть ли разница между "листингом кода 1" и "листингом кода 2"? Потому что в листинге 1 дочерний процесс может уловить сигнал SIGTERM и нормально выйти. Но список кода 2 внезапно завершается по сигналу SIGTERM.
Я использую Linux и C.
Листинг кода 1
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
pid = fork();
Листинг кода 2
pid = fork();
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
Странно то, что в листинге 2 кода оба дочерний и родительский процессы устанавливают обработчик сигнала для SIGTERM . Итак, это должно работать. Разве не так ли?