我试图用C语言中的libpcap来分析流量网络。我想通过进程PID过滤数据包。我一直在做研究,显然pcap不能做我想要的,但netstat可以给我关于流程与流程pid的信息。
这是丑陋的调用“system(”netstat - apn“)”或者我可以使用C / C ++中的其他库吗?我希望我的程序在Linux和Windows下运行。
答案 0 :(得分:0)
是的,system(3)
是generally frowned upon,您将无法获得命令的输出。如果您想要使用该路线,请按照popen(3)
所述使用here。
在Linux衍生平台上采用替代路线,我建议梳理/proc
以了解您感兴趣的流程的详细信息,并使用它来构建bpf
filter。您应该可以从/proc/$PID/net/{tcp, udp}
为您的进程收集four or five tuple,并使用它来创建一个过滤字符串来捕获您想要的数据包。