Ответ 1
Я думаю, что проще всего было бы открыть "/proc" и проанализировать содержимое.
Вы найдете ppid как 4-й параметр/proc/pid/stat
Я попробовал google, но нашел getppid()
, который получает родительский pid текущего процесса.
Мне нужно что-то вроде getppid(some_other_pid)
, есть ли такая вещь? В основном принимает pid какого-то процесса и возвращает родительский процесс pid.
Я думаю, что проще всего было бы открыть "/proc" и проанализировать содержимое.
Вы найдете ppid как 4-й параметр/proc/pid/stat
или из оболочки unix вы можете попробовать ps -p <child_pid> -o ppid=
Я опаздываю на вечеринку на 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;
}
Очевидно, требуется дополнительная проверка ошибок.
Вы можете посмотреть системный вызов sysctl()
и эту ссылку.
еще один способ получить его от записи proc:
cat /proc/<pid>/status | grep PPid: