Мне нужно получить дескриптор файла для использования в вызовах ioctl() для Ethernet-порта в Linux. Не знаете, как это сделать.получить дескриптор файла ioctl для Ethernet-порта
ответ
Просто используйте дескриптор файла открытого сокета, используя имя устройства в структуре ifreq
, переданное в ioctl()
, при условии, что ваша программа имеет соответствующие разрешения для этого.
Из документов:
Linux поддерживает некоторые стандартные IOCTLs для настройки сетевых устройств. Они могут использовать в любом файле сокета дескриптор независимо от семейства или типа. Они передают структуру ifreq:
Сокет не обязательно должен быть привязан к целевому устройству или иметь какое-либо конкретное семейство. Любой открытый сокет fd будет делать (опять же, с соответствующими правами), просто откройте его для своей конкретной задачи, подождите ioctl()
, чтобы вернуть его и закрыть.
См man 7 netdevice
для более или here, если у вас нет соответствующей документации установленных пакетов (подсказка, пакет обычно называется manpages-dev
или manpages-devel
, в зависимости от вашего дистрибутива)
Вы также можете посмотреть на источник для пакета net-tools
, который может быть назван по-разному в зависимости от вашего дистрибутива. Это источник для ifconfig
(Debian/Ubuntu здесь).
Извините за оригинальную двусмысленность, я думал, что вы пытаетесь настроить специальное многофункциональное устройство (не знаете, почему сейчас, возможно, не хватает сна).
Вы можете сделать что-то вроде этого fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)
Используйте strace
, чтобы увидеть, какие функции Ifconfig вызовов.
Эта особенность ioctl() не заботится о семействе или даже если сокет связан с рассматриваемым интерфейсом. –
Вы правы, но этот вызов используется ifconfig eth0
Я думаю, вы имели в виду «какие функции ** ifconfig ** calls»? Тем не менее, независимо от того, любой открытый сокет будет работать. «Магия» указана по адресу инициализированной структуры 'ifreq', переданной ядру через' ioctl() '. –
- 1. IOCTL() вызов сбрасывает дескриптор файла в 0
- 2. Получить дескриптор файла для запуска исполняемого файла
- 3. Как получить дескриптор файла NFS?
- 4. Как получить дескриптор файла процесса?
- 5. дескриптор дескриптора файла и дескриптор файла
- 6. Получить дескриптор файла из файла в Perl
- 7. Используйте CreateFile для заблокированного файла, чтобы получить дескриптор файла
- 8. Почему ioctl() не блокируется?
- 9. Работа ioctl (2)
- 10. возвращает дескриптор ядра из вызова IOCTL - проблема с безопасностью?
- 11. Как получить дескриптор файла зависимости в maven
- 12. как получить дескриптор файла из FFmpeg
- 13. Как получить дескриптор файла по пути?
- 14. Получить дескриптор файла Ручка из FileStream
- 15. Как получить основной дескриптор файла Stream?
- 16. Закрыть трубы получить Bad дескриптор файла
- 17. Как получить дескриптор файла из командной строки?
- 18. есть способ получить дескриптор файла из gzFile
- 19. c strcpy дескриптор файла
- 20. Как зарезервировать дескриптор файла?
- 21. Именованный дескриптор файла pipe
- 22. дескриптор файла и смещение loff_t в интерфейсе чтения и записи ioctl
- 23. Perl опрос файла дескриптор?
- 24. Получить дескриптор модуля для Popen
- 25. Получить дескриптор для приложения Metro
- 26. Как получить дескриптор файла для принятого tcp-сокета в libuv?
- 27. Как получить дескриптор файла для ресурса в пути пути выполнения?
- 28. Как получить дескриптор для блокировки файла в Delphi?
- 29. Как получить дескриптор файла для выхода программы Perl?
- 30. Проверить дескриптор файла Socket?
Извините, не знаю, где будет выглядеть файл, который я собираюсь открыть. Просто подумал, что использование ioctl было бы проще, чем анализ ifconfig. – Terminal
@ Терминал - отредактировал мой ответ для ясности. –
@ Терминал - И вообще, да, это .. в зависимости от того, что вы делаете. –