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

Résolu/Fermé
paksouse - Modifié par paksouse le 23/01/2012 à 18:29
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 25 janv. 2012 à 12:35
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 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
Modifié par mamiemando le 24/01/2012 à 10:28
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 jeudi 1 décembre 2011 Statut Membre Dernière intervention 16 février 2012 634
24 janv. 2012 à 10:16
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
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
25 janv. 2012 à 12:35
hello
obtenir le PPID avec getppid(), ouvrir le fichier /proc/PPID/status et lire la ligne PPid, j'obtiens le PPID du PPID
0