Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2015, 15:16   #1
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию Select

Всем привет!

Весь день читаю литературу, но осознание никак не приходит. Помогите объяснением

Как работает select в Си?

Рассмотрим на простом примере. Работаю с файлом девайса в линуксе. Есть программка, которая закидывает в файл пакеты modbus каждые 5 секунд

Я со своей стороны в бесконечном цикле читаю файл каждые 0.1 сек и при обнаружении пакета, формирую ответ. Читаю и пишу обычными read и write.

Хочу теперь это реализовать через select.

После прочтения теории возникли вопросы.
Надо ли создавать множество дескрипторов, если мы работаем только с одним файлом?
Возвращаемый результат selecta надо класть в int переменную, что там будет? Дескриптор моего файла? Или количество дескрипторов готовых для read/write?

То есть после того, как select что-то вернул начинаем читать и сразу писать?
Bayern_M вне форума Ответить с цитированием
Старый 13.04.2015, 15:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Select это не тот, что работает с сокетами?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2015, 15:49   #3
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Select это не тот, что работает с сокетами?
Именно этот
Bayern_M вне форума Ответить с цитированием
Старый 13.04.2015, 16:07   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Грубо говоря, на входе у селеката массив сокетов.
После отработки селекта в массиве остаются только те сокеты, которые "готовы" к употреблению.
Точнее, массивов три штуки - для проверки готовности к чтению, к записи и на предмет возникновения ошибки.

Дескриптор должен быть только один (на одно соединение), просто он заностся в два массива для селекта. После отработки селекта из тех дескрипторов, что остались в массивах можно читать/писать соответственно.

Возвращаемый результат селекта годиться только для получения ошибки, если селект кардинально не сработал. В каждом массиве своя переменная с количеством сокетов.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSP + HQL: как в блоке <select></select> вызвать метод из DAO? Blondy Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 4 01.06.2013 15:54
mysql_query("select purse ?????select purse??? wmjaqa PHP 3 24.07.2012 06:45
В зависимости от выбора в Select изменить значения другого Select Tayfun HTML и CSS 3 18.08.2011 00:05
Select t1.N,t1.FIO,(select t2.acc from t2 where t2.type=1) from t1,t2 mavlon_m SQL, базы данных 2 17.09.2009 15:28
Передача значения в <select></select> kkkggg Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 06.09.2007 00:26