Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252

Как определить номер дескриптора в eпooл

16.02.2012, 20:50. Показов 1286. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли в epoll как-то получать номер дескриптора, не используя структуру data? Дело в том, что data у меня задействована под другие нужды, а хранить она может только одно число.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2012, 20:50
Ответы с готовыми решениями:

Определить валидность дескриптора
Приветствую. Функцией CreateFile открывается COM порт, функцией CloseHandle закрывается. Перед закрытием порта необходимо убедиться, что...

В чем различия дескриптора,полученного из WinAPI функций и дескриптора, полученного из свойства Handle в классе Process?
Можно ли использовать дескриптор окна,полученный с помощью свойства Handle в классе Process для того что бы ,например, записать значение по...

Определить текущее состояние дескриптора
По имеющемуся дескриптору объекта можно определить его текущее состояние. Это делается с помощью т.н. ожидающих функций. Чаще всего...

8
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
16.02.2012, 21:15
покажи как ты используешь epoll_event.
0
 Аватар для Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
16.02.2012, 21:31  [ТС]
C++
1
2
3
ev.events=EPOLLOUT | EPOLLIN | EPOLLERR;
ev.data.fd=u;
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, des, &ev);
В data я заношу не дескриптор, а другое число, u.
Проблема в том, что я могу получить это число e[i].data.u32. Но им не могу идентифицировать сокет однозначно, т.е. одно и тоже u может быть у нескольких дескрипторов.
А если передавать в ev.data.fd дескриптор, то нужно очень много переписывать, код выйдет сложнее и больше и в общем это не вариант...
Еполл ведь знает какой сокет он слушает и наверно можно как-то определять номер дескриптора? Яж его передаю вместе со структурой:
C++
1
еpoll_ctl(epoll_fd, EPOLL_CTL_ADD, des, &ev);
Или data.fd единственный идентификатор?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
16.02.2012, 22:03
Цитата Сообщение от Union Посмотреть сообщение
А если передавать в ev.data.fd дескриптор, то нужно очень много переписывать
значит, это судьба.

Цитата Сообщение от Union Посмотреть сообщение
в общем это не вариант...
изначально нужно было думать.

Цитата Сообщение от Union Посмотреть сообщение
Еполл ведь знает какой сокет он слушает
он-то знает. но вот ты не узнаешь.

Цитата Сообщение от Union Посмотреть сообщение
наверно можно как-то определять номер дескриптора?
нет. epoll_event::data::fd для этого и предназначался.

обрати внимание на то, что epoll_event::data - не структура. это юнион. таким образом, он может хранить только одно значение.

а для подобных твоему случаев, в этот юнион специально добавили void *ptr;
а используется оно так:
C++
1
2
3
4
5
6
7
8
9
10
struct mydata {
   int fd;
   std::string str;
   some data...
};
 
...
 
ev.data.ptr = new mydata;
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, des, &ev);
и voila!
1
 Аватар для Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
16.02.2012, 22:07  [ТС]
Да, спасибо, так и сделаю
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
16.02.2012, 22:49
Union, смотри только память так не потеряй, в этом варианте нужно будет всегда перед закрытием дескриптора эту удалять структуру.
0
 Аватар для Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
16.02.2012, 22:52  [ТС]
Вот я тоже подумал...
А что если я в epoll.h подкорректирую структуру под себя?
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
16.02.2012, 23:01
Union, ага, и потом ядро с библиотеками пересобрать не забудь. Либо заботься о памяти, либо переписывай с декриптором в данных.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
16.02.2012, 23:48
Цитата Сообщение от Union Посмотреть сообщение
А что если я в epoll.h подкорректирую структуру под себя?
азы жо!: http://en.wikipedia.org/wiki/One_Definition_Rule
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2012, 23:48
Помогаю со студенческими работами здесь

Как по требованию вызвать дескриптора объекта?
Здрасти! Подскажите пожалуйста, как вызвать дескриптор объекта myCar до сообщения "End of programm"?: class Car { ...

Дан четырёхзначный номер года в форме строки. Определить номер столетия
помогите написать программу используя строки Дан четырёхзначный номер года в форме строки. Определить номер столетия, например, при 1492...

Дан номер масти и номер достоинства карты. Определить полное название
Дан номер масти m (1<=m=< 4) и номер достоинства карты k (6<= k =< 14). Определить полное название соответствующей карты в виде «дама пик»,...

Указатели: определить номер строки и номер столбца в матрице по адресу элемента
Как работая на указателях,передвигаясь по матрице определить номер строки и номер столбца по адресу элемента?

Дан номер года. Определить соответствующий ему номер столетия
2.Дан номер некоторого года(целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru