2013-11-14 24 views
1

當我的路由器的web界面正在被使用時,我需要啓動一些輔助進程,並且在一段時間之後關閉它們,如果webface中的活動被停止(要保存沒有使用webface時的RAM)。觀察C中另一個linux進程的網絡活動的方法

當另一個進程(服務器)接受任何網絡連接時,有什麼辦法(除了prace())知道嗎?

我試圖解析/ proc/net/tcp放置在/ proc/pidof httpd/fd中的套接字inode,但它非常不可用,並且只捕獲完整的webface重新加載,但不能導航它。

下面是源我這樣寫的: https://dl.dropboxusercontent.com/u/100376233/zyxel/nethelperd.tar.bz2

OR:有沒有辦法趕上僅使用ptrace的()接受()系統調用,而不是打擾追查過程中,如果它被稱爲另一個系統調用?

回答

2

我建議您使用libpcap,並使用過濾器,如tcp port X,其中X是託管Web界面的端口。每當你收到一個包時,你都可以重置你的計時器。如果計時器在收到數據包之前觸發,則可以關閉服務。您也可以通過不捕獲整個數據包來減少開銷。 libpcap允許您指定每個數據包捕獲的最大字節數。

相關問題