require "sys/sockio.ph" unless defined &SIOCGIFCONF;
В следующем фрагменте кода используется малоизвестное средство системы .ph интерпретатора Perl. Многие вызовы функции ioctl () содержат встроенные коды, определяющие
размеры структур данных, которыми они оперируют. Когда транслятор С обрабатывает файлы include, он имеет возможность определить размеры этих структур во время трансляции и сгенерировать правильные константы, но интерпретатор Perl ничего не знает о структурах данных С и нуждается в определенной помощи со стороны программиста, который должен сообщить ему размеры этих структур.
Именно для этой цели предназначен хеш %sizeof. Каждый раз, когда для обработки файла .ph нужен размер структуры данных, интерпретатор обращается по ключу в этот хеш. Например, он вызывает переменную $sizeof {'int'}, когда ему нужен размер целого числа
$sizeof{’struct ifreq'} для выборки размера структуры ifreq. Для получения правильных размеров функционального кода sioGgifconf и подобных кодов необходимо установить значение хеша %sizeof перед вызовом любого из функциональных кодов ioctl (). Эта операция выполняется в следующих строках кода.
Как оказалось, для работы нужны только две структуры данных С — ifreq, которая содержит информацию о конкретном интерфейсе, и ifconf, которая применяется для выборки списка всех активных интерфейсов. Структура ifconf является самой простой. Она состоит из целого числа и указателя. Указатель обозначает область памяти, в которой должен быть получен список имен интерфейсов, а целое число — размер этой области.
2015-06-24 00:27:47
это интересно Как известно для размещения сайта в сети необходим так называемый хостинг, где и будет помещен контент и программная часть проекта. Предложений в сети много, но некоторые пользуются особенным спросом. На сайте shneider-host.ru можно найти бюджетные предложения хостинга под любые требования, где под лозунгом – Качество доступно всем предлагается линейка дешевых тарифных планов с объемом дискового пространства до 12 Гб.