2015-01-25 2 views
1

Я разработал утилиту для мониторинга пропускной способности сети (для TCP/UDP/IP) nettop, и для того, чтобы связать пакеты, захваченные с Libpcap их соответствующих процессов, я в основном сканировать виртуальную файловую систему /proc/net/(tcp|udp)(6) и /proc/<pid>/fd ,Как связать сокеты с PID в Linux?

Есть ли более эффективный способ сделать это?

Cheers, Эма

+1

Я думаю, что нет лучшего и более эффективного способа. –

+0

Вы уверены, что хотите на карте сокеты? Интересно, как я не вижу, как libpcap вернет вам сокеты (такие же дескрипторы сокетов, что и дескрипторы файла процесса). Возможно, вы имеете в виду «порты»? – alk

+0

@alk вы заканчиваете сопоставление _socket: [....] _ дескриптор файла, поэтому вы также сопоставляете порты с libpcap, но затем для привязки к процессу вам нужно сопоставить порт сокетом и сокетом с pid. Таким образом, есть два уровня косвенности, которые я считаю, и сокет-сопоставление. – Emanuele

ответ

2

Я не думаю, что так - это как команда fuser(1) это делает. Источник для fuser может дать некоторое представление о дополнительных вещах, которые вы, возможно, захотите рассмотреть, хотя (например, с IPv4 и IPv6).

+0

Также проверьте, как работает 'netstat -plunt' – abligh

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