Я пытаюсь передать дочерний процесс пустой сигнал (SIGUSR1) от родителя. Насколько я знаю, я правильно настроил сигнал. Я чувствую, что я возился с вызовом функции Kill(). Я ожидаю какую-то печатную продукцию, но ничего не получаю. Не изнутри ребенка, ни из самой сигнальной функции.Функция сигнала, не вызываемая
код:
void my_handler(int signum);
int main()
{
pid_t pid;
if((pid = fork()) == -1)
{
printf("Error on fork().\n");
exit(1);
}
if(pid == 0)
{
if(signal(SIGUSR1, my_handler))
{
printf("+1");
}
}
else if(pid > 0)
{
sleep(2);
kill(pid, SIGUSR1);
}
}
void my_handler(int signum)
{
if (signum == SIGUSR1)
{
printf("Received SIGUSR1!\n");
}
}
Сделайте себе одолжение: проверьте возвращаемые значения из системных вызовов, например 'kill()'. Они говорят, работает ли система, или нет. –
Выполнение этого сейчас. –
Ваш дочерний процесс выходит, как только он установил обработчик сигнала. Он не ждет получения сигнала. – kaylum