GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni in modo programmatico il pid genitore di un altro processo?

o da una shell unix puoi provare ps -p <child_pid> -o ppid=


Sono in ritardo di 7 anni per la festa, ma per chiunque possa imbattersi in questa domanda, ecco una soluzione alternativa su OS X. Altre risposte pubblicate qui sono corrette e sysctl() farà il lavoro, ma puoi anche usare proc_pidinfo per ottenere molte informazioni utili su un processo.

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

Ovviamente, è necessario un ulteriore controllo degli errori.


Penso che la cosa più semplice sarebbe aprire "/proc" e analizzare i contenuti.

Troverai ppid come quarto parametro di /proc/pid/stat

In C, libproc ha un get_proc_stats funzione per l'analisi di quel file:vedi Dato un PID figlio come puoi ottenere il PID genitore per un esempio.


Puoi dare un'occhiata a sysctl() chiamata di sistema e questo link.


Linux
  1. Nuovo processo genitore quando il processo genitore muore?

  2. Quale processo ha Pid 0?

  3. Come ottenere l'ID processo del processo in background?

  4. Ottieni l'ID del sottoprocesso in Java

  5. Rileva la morte del processo padre

Come ottenere informazioni sul fornitore e sul prodotto USB a livello di codice su Linux?

Il processo figlio riceve il SIGINT del genitore

Come uccidere il processo di zombi

Come ottenere il processo figlio dal processo padre

Come ottenere il PID in base al nome del processo?

Come ottenere il PID padre di un determinato processo in GNU/Linux dalla riga di comando?