回答
爲什麼你會實現這個系統調用?您不想將系統調用添加到現有的Linux API。這是用戶空間的主要Linux接口,除了知道他們在做什麼的頂級內核開發人員之外,沒有人接觸到系統調用。
如果您想獲取進程及其參數和實時狀態的列表,請使用/proc
。每個存在整數的目錄都有一個現有的進程ID,幷包含一些有用的動態文件,其中ps
,top
等用於打印其輸出。
如果你想獲得內核中的進程列表(例如在一個模塊內),你應該知道這些進程在內部保存爲一個雙向鏈表,以init
進程開始(內核中的符號init_task
) 。您應該使用include/linux/sched.h
中定義的宏來獲取進程。這裏有一個例子:
#include <linux/module.h>
#include <linux/printk.h>
#include <linux/sched.h>
static int __init ex_init(void)
{
struct task_struct *task;
for_each_process(task)
pr_info("%s [%d]\n", task->comm, task->pid);
return 0;
}
static void __exit ex_fini(void)
{
}
module_init(ex_init);
module_exit(ex_fini);
這應該沒關係收集信息。但是,除非你真的知道你在做什麼(這將需要更多的閱讀),不要改變那裏的任何東西。
你能提供一些關於如何使用它以及它是如何工作的一些解釋 –
那麼,你必須得到啓動任務。它通常由「當前」完成,這是一個marco。有了這個,你可以獲得當前正在運行的任務。它將返回一個任務。然後你可以開始迭代它。 – Wandy
有系統調用,稱爲打開,並閱讀。所有進程的信息全部保存在/proc/{pid}
目錄中。您可以通過閱讀相應的文件來收集過程信息。
更多解釋這裏:http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
- 1. 如何使用WCF獲取遠程系統進程列表
- 2. 使用Hyperic獲取Java系統進程列表SIGAR
- 3. 使用gdb進行fork()系統調用
- 4. 運行系統進程
- 5. 如何獲得調用系統調用的進程的pid?
- 6. 使用WMI從系統獲取進程列表,使用CPU使用率> 90%
- 7. 在dart中進行系統調用?
- 8. 在Python中進行系統調用
- 9. php5在後臺進行系統調用
- 10. 叉(系統調用) - 進程號
- 11. 洪進程和Linux系統調用248?
- 12. 調用系統從多個進程
- 13. fork() - 多個進程和系統調用
- 14. 是否有系統調用來獲取正在運行的進程的uid/gid?
- 15. 從調用進程獲取命令行
- 16. 查找系統調用封裝器中進程的進程ID
- 17. 跟蹤系統調用進程和所有分支進程
- 18. 獲取進程調用者
- 19. 在django應用程序中獲取python2.7路徑以進行子進程調用
- 20. 從命令行獲取java進程的「user.dir」系統屬性
- 21. 殺系統進程
- 22. 系統進程可以與非系統進程共享數據嗎?
- 23. 獲取子進程的列表,由父進程在Linux中調用
- 24. Linux系統監視器如何獲取進程統計信息
- 25. 可以從Simulink進行系統調用嗎?
- 26. 是否可以在iOS上進行系統調用?
- 27. 如何進行系統調用並讀取D中的stdout?
- 28. 如何在java中進行系統暫停進行調試?
- 29. 獲取系統調用
- 30. 系統API來獲取進程使用的內存狀態
你是指'頂部'命令? – alfasin
輸出就像一個頂級命令,但我需要做一個系統調用來做到這一點。 – douglasd3