У меня непонятки с функцией select().
Код программы:
Код: Выделить всё
#include <fcntl.h>
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#define TIMEOUT 2
#define BUF_LEN 1024
int main(int argc, char *argv[])
{
int fd;
struct timeval tv;
fd_set readfds;
fd_set writefds;
int ret;
fd = open (argv[1], O_RDONLY);
printf("Дескриптор файла: %d\n", fd);
FD_ZERO(&readfds);
FD_SET(fd, &readfds);
tv.tv_sec = TIMEOUT;
tv.tv_usec = 0;
ret = select (fd +1,
&readfds,
NULL,
NULL,
&tv);
if (ret = -1) {
printf ("Ошибка\n");
printf("Функция select вернула:%d\n", ret);
perror("select");
return 1;
} else if (!ret) {
printf ("Истёк тайм аут: %d\n", TIMEOUT);
return 0;
}
printf ("К считыванию готово: %d файлов\n", ret);
return 0;
}
Код: Выделить всё
Дескриптор файла: 3
Ошибка
Функция select вернула:-1
select: Success
Особенно умиляет эта строка
Код: Выделить всё
select: Success
Помогите, что я не понимаю?