NDK Как получить список всех запущенных процессов? - PullRequest
3 голосов
/ 20 июня 2011

Есть ли способ запустить все процессы, выполняемые в настоящее время на устройстве, с использованием чистого кода C / C ++ с использованием NDK?

1 Ответ

5 голосов
/ 20 июня 2011

Android - это Linux для большинства подобных вещей, и официальный способ сделать это в Linux - это прочитать файловую систему /proc. Это то, что делает программа командной строки ps. Вот фрагмент из ps-программы Android , которая находится в репозитории платформы / системы / ядра:

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 - просто ищите первое имя и анализируйте до последнего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...