我正在尝试使用 C 语言的 libpcap 来分析流量网络。我想通过进程 PID 过滤数据包。我一直在做研究,显然 pcap 不能做我想做的事,但 netstat 可以给我有关进程 pid 的流量信息。
调用“system("netstat - apn")”是不是很难看,或者我可以使用 C/C++ 中的任何其他库吗?我希望我的程序在 Linux 和 Windows 下运行。
最佳答案
是的,system(3)
是 generally frowned upon并且您不会得到命令的输出。如果您想走这条路,请使用 popen(3)
正如所讨论的here .
采用替代路线,在 Linux 衍生平台上,我建议结合 /proc
了解您感兴趣的进程的详细信息,并使用它来构建 bpf
filter 。您应该能够收集 four or five tuple为您的进程从 /proc/$PID/net/{tcp, udp}
并使用它创建一个过滤器字符串来捕获您想要的数据包。
关于c - 使用 libpcap 按进程 PID 过滤网络数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551726/