![]() |
|
Модераторы: xvr |
![]()
|
|
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Привет.
Суть вопроса вот в чем: Мониторю события на дескрипторах при помощи epoll. Так вот интересует, можно ли дескрипторы использовать в качестве индекса?
попробовал ради эксперимента, пока работает. Только вот не понятно, насколько это безопасно? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
совсем не безопасно ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| GwinnBleidd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 2.5.2008 Где: Украина, Донецк Репутация: нет Всего: нет |
а когда значение дескриптора станет больше 10000 что будешь делать?
возможный диапазон-то огого Это сообщение отредактировал(а) GwinnBleidd - 13.12.2009, 19:48 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
||||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
MAKCim,
GwinnBleidd, Я вот из каких соображений исхожу - зная что нумеровка дескрипторов в программе, начинается с 3(из-за stdin, stdout, stderr), экспериментальным способом установил, что если открыть файл, его дескриптор равен 3, если открыть еще один файл, 4. Но если закрыть файл у которого дескриптор == 3, и после открыть его опять, то его дескриптор опять равен 3. Из этого предположил, что дескрипторы выделяются не каким-то случайным образом, и ОС оптимизирует этот механизм. И если в программе нет утечки дескрипторов, то принцип выделения их, весьма предсказуем и стабилен. А вообще, было бы интересно узнать/почитать, по какому принципу Linux/BSD выделяют дескрипторы? п.с.
Если программа не открыла 10000 дескрипторов, то диапазон == сколько_открыто + 3 Это сообщение отредактировал(а) andrew_121 - 13.12.2009, 21:10 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
UP.
Я полагаю, что с момента выделения дескриптора, до его освобождения, его все же можно использовать в качестве индекса. Но не уверен. В общем, интересует мнение остальных. И все же это ради эксперимента. Это сообщение отредактировал(а) andrew_121 - 13.12.2009, 21:30 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
andrew_121,
если ты используешь epoll, то epoll_event содежит поле data.ptr и с конкретным event'ом ты можешь связать объект, который будет хранить дескриптор Добавлено через 12 минут и 14 секунд
ссылка -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
У Стивенса в "UNIX разработка сетевых приложений" дескрипторы используются в примере как индексы, однако попытки запуска примера под виндой говорят о том, что описанный вариант является непереносимым по причине х.н знает какого алгоритма выделения значения дескриптора (ИМХО просто рандом полнейший).
|
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Я же описал, что после освобождения дескриптора, если вновь открыть файл, то он получит дескриптор с тем же номером. Т.е. если клиент отключился, дескриптор освободился, так же освобождаются все связанные с ним данные, т.е. сессия с этим клиентом завершена. Конечно, позже он может опять же подключиться, с ним будет начата новая сессия, соответственно, и новый дескриптор. Но я говорю только об одной не прерываемой сессии. Да, да, да. Повторюсь: это просто эксперимент/любопытство.
Знаю. Так я и сделал. Но хотелось понять. Естественно. Венда как-то по своему это реализует. А к книге CD-ROM прилагается? Если да, выложи только этот код на какой-нить файлообменник. Спасибо. -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Я так понимаю, это уже недры open() ? Так вот, хотел начать читать от open() вглубь, так и не понял как тем сайтом пользоваться -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
andrew_121,
вот тебе open() open ;) да, описание системных вызовов достаточно трудно найти, т. к. поиск по sys_open, sys_creat и т. д. не работает из-за того, что для определения изпользуются макросы SYSCALL_DEFINEx -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
MAKCim, Спасибо. Ты случаем не в курсе, есть ли подобные сервисы еще?
Добавлено через 1 минуту и 25 секунд наверное нет. иначе бы ты им и пользовался. Добавлено через 12 минут и 49 секунд Мдя...рано мне код ядра читать Всем спасибо. Тема закрыта. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
куча искать по ключевым словам linux cross-reference другое дело, что на этом сайте версии обновляются параллельно их выходу -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
MAKCim, Еще раз спасибо
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
select (вместе с fd_set) используют файловый дескриптор именно как индекс. И если бы всех такое использование устраивало бы, то poll видимо не появился бы
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |