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并解析,直到关闭即可。