o da una shell unix puoi provare ps -p <child_pid> -o ppid=
Sono in ritardo di 7 anni per la festa, ma per chiunque possa imbattersi in questa domanda, ecco una soluzione alternativa su OS X. Altre risposte pubblicate qui sono corrette e sysctl()
farà il lavoro, ma puoi anche usare proc_pidinfo
per ottenere molte informazioni utili su un processo.
#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;
}
Ovviamente, è necessario un ulteriore controllo degli errori.
Penso che la cosa più semplice sarebbe aprire "/proc" e analizzare i contenuti.
Troverai ppid come quarto parametro di /proc/pid/stat
In C, libproc ha un get_proc_stats
funzione per l'analisi di quel file:vedi Dato un PID figlio come puoi ottenere il PID genitore per un esempio.
Puoi dare un'occhiata a sysctl()
chiamata di sistema e questo link.