сигнал вызова после вилки

Есть ли разница между "листингом кода 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 . Итак, это должно работать. Разве не так ли?

6
задан Sabya 28 January 2011 в 13:39
поделиться