我想列出系統中的所有進程。我曾經使用shell命令「ps」和系統函數來獲得結果。但是,它似乎有點複雜。如何使用UNIX C函數來完成這項工作。如何使用UNIX-C/C++列出所有正在運行的進程
1
A
回答
2
在Linux下,您可以檢查僞文件系統/proc
以獲取進程信息。這意味着使用opendir()
函數集並查找數字的子目錄 - 這些是系統上運行的每個進程的進程標識符。每個子目錄中都有很多文件,只要您的進程具有所需的權限,就可以使用open()/read()
打開和讀取這些文件。
見
PROC(5)
聯機幫助頁提供給你的信息更多的細節。
0
您只需要列出/proc/
目錄=)我的question可能對您有些幫助。
0
沒有找到過程信息的標準;每個Unix供應商都可以提供自己的機制來爲系統管理員提供信息。
Linux和Solaris使用/proc/
文件系統將進程信息導出到用戶空間,但我認爲它們完全不兼容。 (我有一個模糊的回憶,Solaris決定以二進制格式導出其所有信息以刪除內核中的處理,代價是將用戶空間程序更緊密地綁定到內核數據結構上。top
程序曾經非常擅長窺視內核內存中讀取進程表,我不知道它需要更多的,但也許所有的歷史知識是在仍然出爐。)
如果你想成爲特定於平臺的,在Linux proc(5)
幫助頁的信息,您需要。快樂的黑客攻擊。 :)
0
從ps的手冊頁我讀了,您可以使用ps -e
列出標準格式的所有進程,並使用ps ax
列出所有BSD格式的進程。
希望有所幫助。
1
這是一個完成解決方案。
見https://sourceforge.net/p/readproc/code/ci/master/tree/
克隆使用Git,做你想要什麼。
#include"read_proc.h"
int main(void)
{
struct Root * root=read_proc();
struct Job * buffer;
int i=0;
for(;i<root->len;i++)
{
buffer=get_from_place(root,i);
printf("%s\t%u\n",buffer->name,buffer->pid);
}
return 0;
}
1
PSis the standard,是好還是壞。它有許多低估的格式化選項,可以簡化您的跨平臺輸出分析。
/proc
更方便,但不便於攜帶,並在本地甚至在支持可能不可用(例如,在的chroot環境)。
相關問題
- 1. 如何列出所有正在運行的mongod進程?
- 2. 如何使用procps-3.2.8列出所有正在運行的進程?
- 3. 列出正在運行的進程
- 4. 編程讓所有正在運行的進程列表在Mac
- 5. Applescript - 列出所有正在運行的應用程序
- 6. 如何在Windows Phone 7中列出正在運行的進程?
- 7. 如何獲得所有正在運行的進程中的Qt
- 8. 使用NSWorkspace獲取所有正在運行的進程
- 9. 所有正在運行的進程的列表
- 10. 如何使用Java獲取正在運行的進程列表
- 11. 如何列出所有正在運行的CLR實例
- 12. POSIX API調用列出進程中運行的所有pthreads
- 13. 列出VB.NET 2.0當前在windows上運行的所有進程
- 14. 對所有正在運行的進程不顯示進程MainWindowTitle
- 15. 如何獲取Mac上所有正在運行的進程的列表?
- 16. 如何退出所有正在運行的線程?
- 17. 如何確保正在運行的進程正在運行?
- 18. 列出所有正在運行的應用程序MASM32程序集
- 19. NDK如何獲取所有進程運行的列表?
- 20. 如何查看aix上正在運行的進程的所有線程堆棧?
- 21. Android的:如何讓所有正在運行的進程作爲建議有
- 22. 獲取所有正在運行的應用程序的列表
- 23. 在mac終端下:列出所有至少有一個正在運行的進程的用戶?
- 24. 如何在運行時列出函數的所有調用?
- 25. 正在運行的進程列表
- 26. 列出所有的應用程序正在運行,內存使用和運行時間
- 27. 如何使用Java獲取Ubuntu上所有正在運行的進程的列表?
- 28. 在當前目錄中列出正在運行的進程
- 29. Android上所有正在運行的進程的PID
- 30. 終止python中的所有正在運行的進程
在Unix上沒有*文件夾*這樣的東西。 – tchrist 2011-01-30 16:18:24
@tchrist,請詳細說明 – shybovycha 2011-01-30 16:23:36
Unix有目錄,而不是文件夾。文件夾聽起來像嬰兒對我們說話。 – tchrist 2011-01-30 16:30:33