是否有可能在執行新進程,何時關閉以及狀態更改(即停止,分頁等)時得到通知(通過回調或類似方式)?在user-land中,在/ proc上設置一個目錄監聽器很容易。在Linux內核模塊中偵聽新進程
5
A
回答
2
您是否考慮過kprobes?執行某些內核代碼時,可以使用kprobes執行回調函數。例如,您可以添加一個do_fork
kprobe,以便在創建新進程時發出警報,如this example中所示。
同樣,您可以添加do_exit()
的探測器以在進程退出時捕獲。
若要更改狀態,您可以在sched_switch()
上有返回探針,並在狀態更改時捕獲。根據您的應用程序,這可能會增加太多的開銷。
如果你只是想收集數據,進行一些輕的處理,並沒有尋找到與內核模塊的功能遠不止如此,SystemTap的可能是一個很好的替代編寫內核模塊:https://sourceware.org/systemtap/documentation.html
更多細節在Kprobes的: https://www.kernel.org/doc/Documentation/kprobes.txt
sched_switch()
SystemTap的例子: https://sourceware.org/systemtap/examples/profiling/sched_switch.stp
相關問題
- 1. Linux內核模塊編程
- 2. Linux內核和我的內核模塊
- 3. 在編寫Linux內核模塊時獲取用戶進程pid
- 4. Linux內核模塊中的內核線程之間的通信
- 5. 在Python中開發Linux內核模塊
- 6. 在Linux內核模塊中使用RPC
- 7. Linux內核模塊調試
- 8. Linux內核模塊編譯
- 9. Linux內核模塊ABI(x86)
- 10. 安裝Linux內核模塊
- 11. 從Linux內核模塊
- 12. Linux內核模塊配置
- 13. Linux內核模塊編譯
- 14. 關於linux內核模塊
- 15. 剖析Linux內核模塊
- 16. Linux內核模塊編程:makefile
- 17. Linux內核模塊編程Makefile錯誤
- 18. Linux內核模塊編程Makefile
- 19. 在Linux內核(模塊編程)中如何從多線程進程獲取threadids?
- 20. 如何在內核模塊中打印linux內核版本號
- 21. 啓動時內核模塊在Linux內核中的狀態
- 22. 在solaris內核模塊中獲取進程ID和父進程
- 23. 如何在Linux內核模塊
- 24. 在Linux內核模塊中刷新CPU數據緩存
- 25. Linux內核進程管理
- 26. linux內核進程簿
- 27. linux內核模塊內存檢查器
- 28. linux內核 - pte_xxx()API在模塊編程中不起作用
- 29. 在Linux內核模塊中設置線程關聯
- 30. 在Linux內核模塊中線程本地數據
「在用戶的土地,這將是很容易設置上的/ proc目錄監聽器」其實,不,那不行。但[/ proc連接器呢](http://stackoverflow.com/questions/6075013/linux-detect-launching-of-programs)。 – duskwuff 2014-10-08 16:01:20