recvfrom () timeout with alarm ( )

Я ' 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 - это не то, что я ищу.

7
задан Alexandru 8 May 2011 в 18:16
поделиться