【问题标题】:Way to watch network activity of another linux process in C在 C 中观察另一个 linux 进程的网络活动的方法
【发布时间】:2013-11-14 21:00:15
【问题描述】:

当我的路由器的网络接口正在使用时,我需要启动一些辅助进程,并在一段时间后关闭它们,如果 webface 中的活动停止(以在不使用 webface 时节省 RAM)。

有什么方法(除了 prace() )可以知道另一个进程(服务器)何时接受任何网络连接?

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

这是我这样写的源代码: https://dl.dropboxusercontent.com/u/100376233/zyxel/nethelperd.tar.bz2

或者:是否有任何方法可以使用 ptrace() 仅捕获 accept() 系统调用,并且如果它被称为另一个系统调用,则不会干扰跟踪的进程?

【问题讨论】:

    标签: c linux networking ptrace


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多