我需要在使用我的路由器的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()系统调用,如果它被称为另一个系统调用,则不会打扰跟踪进程?
答案 0 :(得分:2)
我建议您将libpcap
与tcp port X
等过滤器一起使用,其中X
是托管Web界面的端口。无论何时收到数据包,您都可以重置计时器。如果计时器在收到数据包之前触发,则可以关闭服务。您还可以通过不捕获整个数据包来减少此开销。 libpcap
允许您指定每个数据包捕获的最大字节数。