1

我需要在使用我的路由器的 Web 界面时启动一些辅助进程,并在一段时间后关闭它们,如果 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() 系统调用,并且如果它被称为另一个系统调用,则不会干扰跟踪的进程?

4

1 回答 1

2

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

于 2013-11-14T21:13:05.120 回答