Я опоздал на вечеринку на 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;
}
Очевидно, что требуется дополнительная проверка ошибок.