Intereting Posts
Как изменить двойной дефис на один дефис имен файлов? Как ядро ​​Linux знает, что конфликты произошли в домене конфликтов Ethernet? Создание файла WORM Что делает sdptool в этом скрипте? Как использовать настоящий PCI-модем в виртуальной машине? существуют ли общедоступные программы, которые используют дескрипторы файлов более 2? Определите devtype и подсистему для питания ноутбука Инструменты Linux для обработки файлов как наборов и выполнения заданных операций над ними Невозможно использовать Wi-Fi-карту после помещения ее в режим мониторинга Что такое оконная система? Сценарий Bash – автоматическое заполнение пользовательского ввода на основе данных массива Команды для аудита Установленное программное обеспечение Добавить пользователя с правами администратора / администратора Жест сенсорной панели на goland gnome 3.18 Как я могу восстановить файлы конфигурации «/ etc /» по умолчанию?

Как найти PID процесса, который владеет пойманным пакетом с libpcap в c?

Необходимо найти pid процесса, которому принадлежит пойманный пакет.

Есть ли способ сделать это без долгого разбора /proc/net/tcp и /proc/<PID>/fd/ ? Может быть, нужно понюхать пакеты по-другому? Я должен найти самый быстрый способ сопоставить пакет и его мастер-процесс в C.

Я не думаю, что существует какой-либо другой способ, /proc/net/* и /proc/*/fd/ похоже, что lsof и netstat -p читаются. Наличие уникального отображения из сокетов (или портов TCP) для процессов также было бы невозможным, поскольку несколько процессов могут иметь копии одного и того же сокета. netstat -p кажется, показывает только один из них, конечно же, перечисляет все. Кроме того, поскольку вы начинаете с пакета, у него может отсутствовать исходный сокет: он может поступать извне системы или из сырого / пакетного сокета