Я использую libnetfilter_conntrack для мониторинга сетевых сессий в C ++.
Единственное, чего не хватает, это PID, который создал сеанс (сокет).
В настоящее время я получаю индекс сессии из / proc / net / tcp, а затем перехожу через / proc // fd для поиска процесса, которому принадлежит этот сокетный индекс.
Это очень неэффективно, и если процесс будет очень коротким, я не получу его вовремя.
Есть ли лучший способ сделать это из пространства пользователя?
Если нет, то возможно ли построить простой модуль ядра, который будет переводить inode в pid более эффективно?
Задача ещё не решена.
Других решений пока нет …