Событие позволяет передавать пользовательские данные.Вы можете использовать это одним из следующих способов:
1) передать адрес члена FD в структуре и затем использовать арифметику указателя, чтобы выяснить, какой структуре в вашем массиве принадлежит адрес и какой FD.Выравнивая структуру по границе 2 ^ n, вы можете использовать битовые сдвиги и маски, или это.
2) Кодировать индекс структуры и индекс FD в одном int, например index * 5 + fd,Получение индекса и fd из этого тривиально.
3) Выделите дополнительные struct { struct myfds_for_nic * nic; int num_fd; }
для каждого добавляемого вами FD, заполните его и используйте его адрес в качестве данных для события.
Вариант 2 может быть самым простым для понимания, тогда как вариант 3 является наиболее общим.