GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir par programmation le pid parent d'un autre processus ?

ou depuis un shell unix, vous pouvez essayer ps -p <child_pid> -o ppid=


J'ai 7 ans de retard à la fête mais pour tous ceux qui pourraient tomber sur cette question, voici une solution alternative sur OS X. Les autres réponses publiées ici sont correctes et sysctl() fera l'affaire, mais vous pouvez aussi utiliser proc_pidinfo pour obtenir de nombreuses informations utiles sur un processus.

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

Évidemment, une vérification supplémentaire des erreurs est nécessaire.


Je pense que la chose la plus simple serait d'ouvrir "/proc" et d'analyser le contenu.

Vous trouverez le ppid comme 4ème paramètre de /proc/pid/stat

En C, libproc a un get_proc_stats fonction pour analyser ce fichier :voir Étant donné un PID enfant, comment pouvez-vous obtenir le PID parent pour un exemple.


Vous pouvez jeter un oeil à sysctl() appel système et ce lien.


Linux
  1. Nouveau processus parent lorsque le processus parent meurt ?

  2. Quel processus a le Pid 0 ?

  3. Comment obtenir le chemin d'un processus sous Unix / Linux

  4. Obtenir la vitesse du lien par programmation ?

  5. Le processus enfant reçoit le SIGINT du parent

Détecter la mort du processus parent

Comment tuer le processus zombie

Comment obtenir un processus enfant à partir d'un processus parent

Comment obtenir le PID par nom de processus ?

Comment obtenir le PID parent d'un processus donné sous GNU/Linux à partir de la ligne de commande ?

Comment obtenir le pid du processus qui vient de démarrer