または UNIX シェルから ps -p <child_pid> -o ppid=
を試すことができます
私はパーティーに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;
}
明らかに、追加のエラー チェックが必要です。
最も簡単な方法は、「/proc」を開いて内容を解析することだと思います。
/proc/pid/stat の 4 番目のパラメーターとして ppid が見つかります
C では、libproc には get_proc_stats
があります そのファイルを解析するための関数:例については、子 PID を指定して親 PID を取得する方法を参照してください。
sysctl()
を見ることができます システムコールとこのリンク。