Файлы не хранятся на диске, но они - рычаги к ядру.
Когда Вы открываете файл (использование fopen()
), ядро обрабатывает это задание. Это идет через точки монтирования, находит, что соответствующий драйвер обрабатывает запрос и вручает задачу тому драйверу.
В случае /proc
, запрос чтения файла передается внутренней "proc" системе в ядре. В данный момент Вы читаете файл, он возвращает значение из памяти.
Подобный шаблон также происходит с файлами в /dev
. Ядро видит, что Вы открываете dev-узел с определенным идентификатором устройства и связывает поток IO с конкретным драйвером, который обрабатывает запрос.
В основном я хотел бы постоянно получить обновленные значения от meminfo и cpuinfo.
Можно считать proc файловую систему, чтобы считать эти значения или видеть, существуют ли, возможно, другие syscalls, которые можно использовать для нее. Это будет механизм опроса, тем не менее, таким образом, всегда будет определенная включенная системная нагрузка.
Версия 2.6.35 ядра Linux представляет новый параметр конфигурации CONFIG_NETFILTER_XT_TARGET_TEE
:
Эта опция добавляет цель "МИШЕНИ", с которой пакет может быть клонирован и этот клон быть перенаправленным к другому nexthop.
Iptables поддерживает -j TEE
цель с тех пор 1.4.8.
Более ранняя поддержка была через xtables дополнения, которые включают и модули ядра и инструменты пространства пользователя. Можно все еще предпочесть эту опцию, если Вы предпочитаете придерживаться ядра своего распределения, и это слишком старо, чтобы иметь TEE
.
Существует учебное руководство bjou (записанный, прежде чем функция была включена в официальное ядро и iptables).
Стопка сетевого протокола разработана для ограничения дублирования.
Можно быть более обеспеченным туннелированием по TCP. Иначе необходимо будет, вероятно, создать собственную программу для дублирования вывода. Насколько ненадежный Ваши соединения. Мои обычно хорошо на более чем 99,9% надежны.
Возможно, пакетный пакет сниффинга, такой как scapy может помочь Вам. Я недавно использовал его, чтобы прервать пакеты и изменить их заголовки. Это по существу составляет создание новой программы как предложенный BillThor, но я нашел scapy очень простой в использовании. В то время как это не может быть лучшим пакетом его вида, возможно, что-то подобное удовлетворит Вашим потребностям.