Récupéré le PID du grand pére d'1 processu

Résolu
paksouse -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

récupéré la valeur du grand pére d'1 processus :

comment puis je récupéré la valeur du pid du grand père d'un processus .

je savais juste la méthode getpid() et getppid() qui retourne successivement le pid du processus courant et le pid du processus père .

en faite c'est un question d'un contrôle que j'ai passé le samedi dernier , j'ai utilisé cette méthode GETPPID(GETPPID()) mais j'en suis sûr que c'est faux .

Merci d'avance.

j'attend vos réponses avec impatience .

A voir également:

4 réponses

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Effectivement car getppid() ne prend pas de paramètre, tu ne peux donc pas la composer par elle même. Il était précisé que tu devais répondre avec du langage C ?

Personnellement j'aurais plutôt utilisé la commande :

ps faux


... qui donne l'arbre des processus. Ensuite avec un grep bien choisi j'aurais extrait la ligne du processus qui m'intéresse, ainsi que les deux lignes qui précèdent (père et grand père) avec l'option -B2. Et j'aurais enfin conservé uniquement la première ligne parmi ces trois avec head -n1.

(mando@aldur) (~) $ ps faux | grep -v grep | grep -B2 ssh-agent
root      1978  0.0  0.1  60328  2176 ?        S    09:53   0:00  \_ -:0                                    
mando     2096  0.0  0.0   4148   632 ?        Ss   09:56   0:00      \_ /bin/sh /usr/bin/startkde
mando     2137  0.0  0.0  12236   300 ?        Ss   09:56   0:00          \_ /usr/bin/ssh-agent /usr/bin/gpg-agent --daemon --sh --write-env-file=/home/mando/.gnupg/gpg-agent-info-aldur /usr/bin/dbus-launch --exit-with-session /usr/bin/startkde

(mando@aldur) (~) $ ps faux | grep -v grep | grep -B2 ssh-agent | head -n1
root      1978  0.0  0.1  60328  2176 ?        S    09:53   0:00  \_ -:0 


Note la présence du "grep -v grep" qui permet d'éviter d'être pertubé par les greps présents dans la commande qu'on lance, car évidemment, si l'on a plusieurs processus extraits à la suite des greps, tout tombe à l'eau.

Ensuite avec awk, on peut extraire la colonne qui nous intéresse (on peut aussi passer à ps des options pour avoir un format plus pratique à manipuler)

(mando@aldur) (~) $ ps faux | grep -v grep | grep -B2 ssh-agent | head -n1 | awk '{print $12}'
-:0


Bonne chance
0
titus22 Messages postés 1918 Date d'inscription   Statut Membre Dernière intervention   639
 
Effectivement tu peut utiliser getpid et getppid pour avoir la valeur du pid et du pid père. Il n'existe pas de fonction retournant le pid du grand père.

Pour ce faire il faut que le père envoie le pid du grand-père à son fils. Via tube,socket,fichier...
0
paksouse
 
OK. merci .

c'est ce que j'ai cru,il faut passer le pid du grand père soit par des variables ou les tube,socket,fichier .

Merci pour vos réponses .
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
obtenir le PPID avec getppid(), ouvrir le fichier /proc/PPID/status et lire la ligne PPid, j'obtiens le PPID du PPID
0