在C中观察另一个Linux进程的网络活动的方法

时间:2013-11-14 21:00:15

标签: c linux networking ptrace

我需要在使用我的路由器的web界面时启动一些辅助进程,并在一段时间后关闭它们,如果webface中的活动被停止(为了在不使用webface时节省RAM)。

当另一个进程(服务器)接受任何网络连接时,是否有任何方法(prace()除外)知道?

我试图解析/ proc / net / tcp中放置在/ proc / pidof httpd / fd中的套接字inode但是这是非常不可行的,并且只捕获完整的webface重新加载,但不能在其上导航。 / p>

这是我用这种方式写的来源: https://dl.dropboxusercontent.com/u/100376233/zyxel/nethelperd.tar.bz2

OR:有没有办法只使用ptrace()捕获accept()系统调用,如果它被称为另一个系统调用,则不会打扰跟踪进程?

1 个答案:

答案 0 :(得分:2)

我建议您将libpcaptcp port X等过滤器一起使用,其中X是托管Web界面的端口。无论何时收到数据包,您都可以重置计时器。如果计时器在收到数据包之前触发,则可以关闭服务。您还可以通过不捕获整个数据包来减少此开销。 libpcap允许您指定每个数据包捕获的最大字节数。