Select()

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Pal
мл. сержант
Сообщения: 97
Зарегистрирован: 2008-07-04 14:40:14

Select()

Непрочитанное сообщение Pal » 2008-09-05 15:03:52

Здравствуйте.
У меня непонятки с функцией 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
Если в качестве цели ей подсовывать не аргумент а STDIN_FILENO, происходит тоже самое.
Особенно умиляет эта строка

Код: Выделить всё

 select: Success
Компилится и проверяется на Linux 2.6.24-21-generic
Помогите, что я не понимаю?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Pal
мл. сержант
Сообщения: 97
Зарегистрирован: 2008-07-04 14:40:14

Re: Select()

Непрочитанное сообщение Pal » 2008-09-05 15:48:42

Проблема тут, опечатался)))

Код: Выделить всё

if (ret = -1)
надо так
if (ret == -1)

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Select()

Непрочитанное сообщение Fastman » 2008-09-06 11:10:52

Pal писал(а):Проблема тут, опечатался)))

Код: Выделить всё

if (ret = -1)
надо так
if (ret == -1)

Стандартная ошибка :)
Хотя у меня палец неосознанно двойной клик на равно делает автоматом при описании в if :)
Главное в жизни здоровье и любовь, остальное я все куплю.

Pal
мл. сержант
Сообщения: 97
Зарегистрирован: 2008-07-04 14:40:14

Re: Select()

Непрочитанное сообщение Pal » 2008-09-10 17:03:14

Я подобных ошибок очень много допускаю=) Могу словарь написать по таким ошибкам. Кодить начал недавно.