如何在c中使用libpcap找到拥有捕获数据包的进程的PID?

如何在c中使用libpcap找到拥有捕获数据包的进程的PID?

需要找到拥有捕获数据包的进程的pid。

有没有办法不用长时间解析/proc/net/tcpand来做到这一点/proc/<PID>/fd/?也许,需要以另一种方式嗅探数据包?我必须找到在 C 中关联数据包及其主进程的最快方法。

答案1

我认为没有任何其他方法,/proc/net/*并且/proc/*/fd/似乎是什么lsof并且netstat -p阅读。拥有从套接字(或 tcp 端口)到进程的唯一映射也是不可能的,因为多个进程可以拥有同一套接字的副本。netstat -p似乎只显示其中之一,lsof当然列出了所有。另外,由于您是从数据包开始的,因此它可能根本没有原始套接字:它可能来自系统外部,或者来自原始/数据包套接字

相关内容