Buduję prostą aplikację przy użyciu c, który był używany recvmmsg()
, a piątym parametrem jest limit czasu wynoszący type struct timespec
. Ustawiłem limit czasu na 5 sekund, ale to nie działa, blokuje nieskończoność.Jak ustawić limit czasu w recvmmsg()?
Kod jest jak następuje:
struct timespec timeout;
timeout.tv_sec = 5;
timeout.tv_nsec = 0;
result = recvmmsg(fd, datagrams, BATCH_SIZE, 0, &timeout);
Istnieje sugestia dotycząca możliwego błędu, który może być istotny: http://lists.openwall.net/netdev/2012/12/23/30 – Vicky
@Vicky: To jest prawo - podobne do linku w moim odpowiedź. Nie jest jednak jasne, czy ktokolwiek zmienił zachowanie - bardziej prawdopodobne, że zostanie to uznane za błąd w dokumentacji, strona podręcznika będzie zaktualizowana, a niemal bezużyteczny parametr limitu czasu po prostu nie będzie używany przez większość aplikacji. –
jest inne rozwiązanie w powyższym linku, używając: http://stackoverflow.com/questions/12713438/how-to-add-delay-to-sento-and-recvfrom-in-udp-client-server-in- c – MOHAMED