ou depuis un shell unix, vous pouvez essayer ps -p <child_pid> -o ppid=
J'ai 7 ans de retard à la fête mais pour tous ceux qui pourraient tomber sur cette question, voici une solution alternative sur OS X. Les autres réponses publiées ici sont correctes et sysctl()
fera l'affaire, mais vous pouvez aussi utiliser proc_pidinfo
pour obtenir de nombreuses informations utiles sur un processus.
#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;
}
Évidemment, une vérification supplémentaire des erreurs est nécessaire.
Je pense que la chose la plus simple serait d'ouvrir "/proc" et d'analyser le contenu.
Vous trouverez le ppid comme 4ème paramètre de /proc/pid/stat
En C, libproc a un get_proc_stats
fonction pour analyser ce fichier :voir Étant donné un PID enfant, comment pouvez-vous obtenir le PID parent pour un exemple.
Vous pouvez jeter un oeil à sysctl()
appel système et ce lien.