2
有沒有辦法使用NDK使用純C/C++代碼來獲取當前在設備上運行的所有進程?NDK如何獲取所有進程運行的列表?
有沒有辦法使用NDK使用純C/C++代碼來獲取當前在設備上運行的所有進程?NDK如何獲取所有進程運行的列表?
對於大多數此類事情,Android是Linux,而在Linux上執行此操作的官方方式是讀取/proc
文件系統。這就是ps
命令行程序所做的。下面是從Android's ps program一個片段,它生活在平臺/系統/核心庫:
d = opendir("/proc");
while((de = readdir(d)) != 0){
if(isdigit(de->d_name[0])){
int pid = atoi(de->d_name);
if(!pidfilter || (pidfilter == pid)) {
ps_line(pid, 0, namefilter);
if(threads) ps_threads(pid, namefilter);
}
}
}
的ps_line
功能是相當大的,但你想要的部分就是它讀取/proc/<pid>/stat
。從該文件中,您可以很容易地獲得進程名稱,格式爲PID (process-name) other stuff
- 只需查找第一個paren並解析,直到關閉即可。