2013-11-14 2 views
1

Мне нужно запустить некоторые вспомогательные процессы, когда используется веб-интерфейс моего маршрутизатора, и через некоторое время отключить их, если активность в веб-интерфейсе была остановлена ​​(для сохранения RAM, когда веб-интерфейс не используется).Способ просмотра сетевой активности другого процесса linux в C

Есть ли способ (кроме prace()) знать, когда другой процесс (сервер) принял какое-либо сетевое соединение?

Я пытаюсь разобрать/proc/net/tcp для сокетов inodes, помещенных в/proc/pidof httpd/fd, но это очень неустранимо и поймать только полную перезагрузку webface, но не переходить через него.

Вот источник я написал так: https://dl.dropboxusercontent.com/u/100376233/zyxel/nethelperd.tar.bz2

ИЛИ: есть ли способ, чтобы поймать только принять() с помощью системного вызова ptrace() и не беспокоить прослежен процесс, если это называется другим системным вызовом?

ответ

2

Я бы рекомендовал вам использовать libpcap с фильтром, например tcp port X, где X - это порт, в котором размещен веб-интерфейс. Всякий раз, когда вы получаете пакет, вы можете сбросить свой таймер. Если таймер срабатывает, прежде чем вы получите пакет, вы можете отключить службы. Вы также можете уменьшить накладные расходы, не захватывая весь пакет. libpcap позволяет указать максимальное количество байтов для каждого пакета.

Смежные вопросы