select () не использует то, что установлено для timeval

У меня есть фрагмент ниже — я поправил tv_usec несколькими способами, но я продолжаю сидеть в select() цикл почти ровно 10 секунд, независимо от того, что tv_usec установлено в.

    char buffer[512];
fd_set readfds;
struct timeval tv;
tv.tv_usec = 50;

int rv = 1;

// clear the set ahead of time
FD_ZERO(&readfds);

// add our descriptors to the set
FD_SET(mySocket, &readfds);

// the n param for select()
int n = mySocket + 1;

while(rv != 0)
{
rv = select(n, &readfds, NULL, NULL, &tv);

if (rv == -1)
perror("select"); // error occurred in select()

bzero(buffer,512);
int n = recvfrom(mySocket,buffer,512,0,(struct sockaddr *)&server, &sockLen);

// do stuff...
}

0

Решение

tv.tv_sec необходимо инициализировать в что-то. настройка tv.tv_sec = 0 решил проблему.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]