o desde un shell de Unix puedes probar ps -p <child_pid> -o ppid=
Llegué 7 años tarde a la fiesta, pero para cualquiera que pueda tropezar con esta pregunta, aquí hay una solución alternativa en OS X. Otras respuestas publicadas aquí son correctas y sysctl()
hará el trabajo, pero también puedes usar proc_pidinfo
para obtener mucha información útil sobre un proceso.
#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;
}
Obviamente, se requiere una verificación de errores adicional.
Creo que lo más sencillo sería abrir "/proc" y analizar el contenido.
Encontrará el ppid como el cuarto parámetro de /proc/pid/stat
En C, libproc tiene un get_proc_stats
función para analizar ese archivo:consulte Dado un PID secundario, ¿cómo puede obtener el PID principal para ver un ejemplo?
Puedes echar un vistazo a sysctl()
llamada al sistema y este enlace.