GNU/Linux >> Znalost Linux >  >> Linux

Programově získat nadřazené pid jiného procesu?

nebo z unixového shellu můžete zkusit ps -p <child_pid> -o ppid=


Na večírek mám 7 let zpoždění, ale pro každého, kdo by mohl narazit na tuto otázku, je zde alternativní řešení pro OS X. Ostatní zde zveřejněné odpovědi jsou správné a sysctl() úlohu udělá, ale můžete také použít proc_pidinfo získat mnoho užitečných informací o procesu.

#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;
}

Je zřejmé, že je vyžadována další kontrola chyb.


Myslím, že nejjednodušší by bylo otevřít "/proc" a analyzovat obsah.

ppid najdete jako čtvrtý parametr /proc/pid/stat

V C má libproc get_proc_stats funkce pro analýzu tohoto souboru:viz příklad, jak můžete získat rodičovský PID s podřízeným PID.


Můžete se podívat na sysctl() systémové volání a tento odkaz.


Linux
  1. Nový rodičovský proces, když rodičovský proces zemře?

  2. Jak získám cestu k procesu v Unixu / Linuxu

  3. Jak získat ID procesu na pozadí?

  1. Získejte ID podprocesu v Javě

  2. Získat rychlost připojení programově?

  3. Jak programově získat informace o dodavateli USB a produktu v systému Linux?

  1. Podřízený proces obdrží SIGINT rodiče

  2. Detekce smrti rodičovského procesu

  3. Jak zabít zombie proces