NDK如何获取所有进程运行的列表?

时间:2011-06-20 04:16:46

标签: android android-ndk

是否有使用NDK使用纯C / C ++代码在设备上运行当前所有进程?

1 个答案:

答案 0 :(得分:5)

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并解析,直到结束时。