Я ' m отлаживаю следующий код:
signal(SIGALRM, testt);
alarm(1);
result = recvfrom( listening_socket, buf, maxlen, 0, &from, &fromlen );
printf("stoped\n");
Как описано в man 3 siginterrupt
, сигнал тревоги должен прерывать системный вызов, но в моем случае это не так. Обработчик аварийных сигналов вызывается, но recvfrom
не прерывается.
Однако, когда новый обработчик сигнала указан с помощью функции signal (2), системный вызов прерывается по умолчанию.
Если I добавить siginterrupt (SIGALRM, 1);
после установки обработчика аварийных сигналов recvfrom
прерывается, как ожидалось.
Что мне не хватает? Что не так с моим кодом?
ПРИМЕЧАНИЯ: Замена signal
на sigaction
- это не то, что я ищу.