atau dari shell unix Anda dapat mencoba ps -p <child_pid> -o ppid=
Saya terlambat 7 tahun ke pesta tetapi bagi siapa saja yang mungkin menemukan pertanyaan ini, inilah solusi alternatif di OS X. Jawaban lain yang diposting di sini benar dan sysctl()
akan melakukan tugasnya, tetapi Anda juga dapat menggunakan proc_pidinfo
untuk mendapatkan banyak informasi berguna tentang suatu proses.
#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;
}
Jelas, pemeriksaan kesalahan tambahan diperlukan.
Saya pikir hal yang paling sederhana adalah membuka "/proc" dan mem-parsing isinya.
Anda akan menemukan ppid sebagai parameter ke-4 dari /proc/pid/stat
Di C, libproc memiliki get_proc_stats
fungsi untuk mem-parsing file itu:lihat Diberi PID anak, bagaimana Anda bisa mendapatkan PID induk sebagai contoh.
Anda dapat melihat sysctl()
panggilan sistem dan tautan ini.