Linux: программно получить родительский PID другого процесса? - PullRequest
24 голосов
/ 06 октября 2009

Я попробовал Google, но нашел getppid(), который получает родительский pid текущего процесса.

Мне нужно что-то вроде getppid(some_other_pid), есть такая вещь? Обычно принимает pid какого-либо процесса и возвращает pid родительского процесса.

Ответы [ 5 ]

29 голосов
/ 06 октября 2009

Я думаю, что самым простым было бы открыть "/ proc" и разобрать содержимое.

Вы найдете ppid в качестве 4-го параметра / proc / pid / stat

12 голосов
/ 16 мая 2012

или из оболочки unix вы можете попробовать ps -p <child_pid> -o ppid=

5 голосов
/ 09 января 2017

Я опоздал на вечеринку на 7 лет, но для тех, кто может наткнуться на этот вопрос, вот альтернативное решение для OS X. Другие ответы, опубликованные здесь, верны и sysctl() выполнит работу, но вы также можете использовать proc_pidinfo, чтобы получить много полезной информации о процессе.

#include <libproc.h>

int getppid(const pid_t pid)
{
    proc_bsdinfo info;
    proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info));
    return info.pbi_ppid;
}

Очевидно, что требуется дополнительная проверка ошибок.

2 голосов
/ 16 октября 2015

еще один способ получить его из записи proc:

cat /proc/<pid>/status | grep PPid:
2 голосов
/ 06 октября 2009

Вы можете взглянуть на sysctl() системный вызов и эту ссылку.

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