У меня есть следующий код:
void sig_handler(int sig) {
printf("Hello child\n");
}
int main()
{
pid_t child = fork();
if (child > 0)
{
printf("Hello parent\n");
kill(child, SIGUSR1);
}
else if (child == 0)
{
signal(SIGUSR1, sig_handler);
printf("In child\n");
}
else
{
printf("Error\n");
}
return 0;
}
Я хочу запустить код:
Hello parent
Hello child
In child
Но ребенок убивается сразу после того, как родитель отправляет kill(child, SIGUSR1);
, и результат просто:
Hello parent
Я прочитал документ о том, что действие по умолчанию SIGUSR1
является завершением, однако я уже реализовал обработчик сигнала signal(SIGUSR1, sig_handler);
для перехвата SIGUSR1
, тогда почему ребенок все еще убит?