oder von einer Unix-Shell können Sie ps -p <child_pid> -o ppid=
versuchen
Ich bin 7 Jahre zu spät zur Party, aber für alle, die über diese Frage stolpern, hier ist eine alternative Lösung für OS X. Andere hier gepostete Antworten sind richtig und sysctl()
wird den Job erledigen, aber Sie können auch proc_pidinfo
verwenden um viele nützliche Informationen über einen Prozess zu erhalten.
#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;
}
Offensichtlich ist eine zusätzliche Fehlerprüfung erforderlich.
Ich denke, das Einfachste wäre, "/proc" zu öffnen und den Inhalt zu parsen.
Sie finden die ppid als 4. Parameter von /proc/pid/stat
In C hat libproc einen get_proc_stats
Funktion zum Analysieren dieser Datei:siehe Wie kann man die Eltern-PID bei gegebener untergeordneter PID erhalten? für ein Beispiel.
Sie können sich sysctl()
ansehen Systemaufruf und diesen Link.