Comment obtenir le PID d'un sous processus dans le sous processus lui
même.
Dans le code suivant
8<------8<------8<------8<------8<------8<------8<------8<------8<------
(
PID=$$
trap "echo \"trap sub-process $PID\"" HUP INT ABRT QUIT SEGV TERM EXIT
sleep 1
) &
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane CHAZELAS
2009-10-09, 16:38(+02), Ph Ivaldi:
Bonjour,
Comment obtenir le PID d'un sous processus dans le sous processus lui même. Dans le code suivant 8<------8<------8<------8<------8<------8<------8<------8<------8<------ ( PID=$$ trap "echo "trap sub-process $PID"" HUP INT ABRT QUIT SEGV TERM EXIT sleep 1 ) &
alors que je m'attendais à obtenir trap sub-process 12933
$$, c'est le pid to shell qui interprete le script. Les fork de sous-process, c'est de la cuisine interne. Par exemples, tous les shells ne forkent pas dans $(...) et (...) et le comportement pour ... | ... differe de shell a shell, et le process qui interprete du code n'est pas forcement le meme que celui qui execute la ou les commandes resultantes.
sh -c 'echo "$PPID"'
peut aider.
Accessoirement est-il possible d'obtenir le code de retour d'un sous processus détaché sans passer par un fichier auxiliaire ?
[...]
wait "$pid"; echo "$?"
-- Stéphane
2009-10-09, 16:38(+02), Ph Ivaldi:
Bonjour,
Comment obtenir le PID d'un sous processus dans le sous processus lui
même.
Dans le code suivant
8<------8<------8<------8<------8<------8<------8<------8<------8<------
(
PID=$$
trap "echo "trap sub-process $PID"" HUP INT ABRT QUIT SEGV TERM EXIT
sleep 1
) &
alors que je m'attendais à obtenir
trap sub-process 12933
$$, c'est le pid to shell qui interprete le script. Les fork de
sous-process, c'est de la cuisine interne. Par exemples, tous
les shells ne forkent pas dans $(...) et (...) et le
comportement pour ... | ... differe de shell a shell, et le
process qui interprete du code n'est pas forcement le meme que
celui qui execute la ou les commandes resultantes.
sh -c 'echo "$PPID"'
peut aider.
Accessoirement est-il possible d'obtenir le code de retour d'un sous
processus détaché sans passer par un fichier auxiliaire ?
Comment obtenir le PID d'un sous processus dans le sous processus lui même. Dans le code suivant 8<------8<------8<------8<------8<------8<------8<------8<------8<------ ( PID=$$ trap "echo "trap sub-process $PID"" HUP INT ABRT QUIT SEGV TERM EXIT sleep 1 ) &
alors que je m'attendais à obtenir trap sub-process 12933
$$, c'est le pid to shell qui interprete le script. Les fork de sous-process, c'est de la cuisine interne. Par exemples, tous les shells ne forkent pas dans $(...) et (...) et le comportement pour ... | ... differe de shell a shell, et le process qui interprete du code n'est pas forcement le meme que celui qui execute la ou les commandes resultantes.
sh -c 'echo "$PPID"'
peut aider.
Accessoirement est-il possible d'obtenir le code de retour d'un sous processus détaché sans passer par un fichier auxiliaire ?
[...]
wait "$pid"; echo "$?"
-- Stéphane
Ph. Ivaldi
Le 09 octobre 2009, Stephane CHAZELAS écrivit :
$$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui interprète étant $PPID ?
Les fork de sous-process, c'est de la cuisine interne. Par exemples, tous les shells ne forkent pas dans $(...) et (...) et le comportement pour ... | ... differe de shell a shell, et le process qui interprete du code n'est pas forcement le meme que celui qui execute la ou les commandes resultantes.
Bon ben, c'est râpé alors... Je vais procéder autrement.
sh -c 'echo "$PPID"'
Là ça me renvoie le pid du shell qui interprète le processus (mais je n'en suis plus sûr): 8<------8<------8<------8<------8<------8<------8<------8<------8<------ $ sh -c 'echo "$PPID"' 6471
$ ps aux|grep 6471 pi 6471 0.0 0.2 7360 4016 pts/2 Ss 09:13 0:00 /bin/bash pi 17896 0.0 0.0 1872 560 pts/2 S+ 18:08 0:00 grep 6471 8<------8<------8<------8<------8<------8<------8<------8<------8<------
Je ne comprends pas tout: $ echo $PPID 6235
Je m'attendais à 6471
Accessoirement est-il possible d'obtenir le code de retour d'un sous processus détaché sans passer par un fichier auxiliaire ?
wait "$pid"; echo "$?"
Oui, mais du coup ça ne ME sert plus à rien de détacher le processus s'il faut l'attendre après. Et s'il termine avant que s'exécute le wait, ça renvoie 0. -- Philippe Ivaldi. http://www.piprime.fr/
Le 09 octobre 2009, Stephane CHAZELAS écrivit :
$$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui
interprète étant $PPID ?
Les fork de
sous-process, c'est de la cuisine interne. Par exemples, tous
les shells ne forkent pas dans $(...) et (...) et le
comportement pour ... | ... differe de shell a shell, et le
process qui interprete du code n'est pas forcement le meme que
celui qui execute la ou les commandes resultantes.
Bon ben, c'est râpé alors...
Je vais procéder autrement.
sh -c 'echo "$PPID"'
Là ça me renvoie le pid du shell qui interprète le processus (mais je
n'en suis plus sûr):
8<------8<------8<------8<------8<------8<------8<------8<------8<------
$ sh -c 'echo "$PPID"'
6471
$ ps aux|grep 6471
pi 6471 0.0 0.2 7360 4016 pts/2 Ss 09:13 0:00 /bin/bash
pi 17896 0.0 0.0 1872 560 pts/2 S+ 18:08 0:00 grep 6471
8<------8<------8<------8<------8<------8<------8<------8<------8<------
Je ne comprends pas tout:
$ echo $PPID
6235
Je m'attendais à 6471
Accessoirement est-il possible d'obtenir le code de retour d'un sous
processus détaché sans passer par un fichier auxiliaire ?
wait "$pid"; echo "$?"
Oui, mais du coup ça ne ME sert plus à rien de détacher le processus s'il
faut l'attendre après.
Et s'il termine avant que s'exécute le wait, ça renvoie 0.
--
Philippe Ivaldi.
http://www.piprime.fr/
$$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui interprète étant $PPID ?
Les fork de sous-process, c'est de la cuisine interne. Par exemples, tous les shells ne forkent pas dans $(...) et (...) et le comportement pour ... | ... differe de shell a shell, et le process qui interprete du code n'est pas forcement le meme que celui qui execute la ou les commandes resultantes.
Bon ben, c'est râpé alors... Je vais procéder autrement.
sh -c 'echo "$PPID"'
Là ça me renvoie le pid du shell qui interprète le processus (mais je n'en suis plus sûr): 8<------8<------8<------8<------8<------8<------8<------8<------8<------ $ sh -c 'echo "$PPID"' 6471
$ ps aux|grep 6471 pi 6471 0.0 0.2 7360 4016 pts/2 Ss 09:13 0:00 /bin/bash pi 17896 0.0 0.0 1872 560 pts/2 S+ 18:08 0:00 grep 6471 8<------8<------8<------8<------8<------8<------8<------8<------8<------
Je ne comprends pas tout: $ echo $PPID 6235
Je m'attendais à 6471
Accessoirement est-il possible d'obtenir le code de retour d'un sous processus détaché sans passer par un fichier auxiliaire ?
wait "$pid"; echo "$?"
Oui, mais du coup ça ne ME sert plus à rien de détacher le processus s'il faut l'attendre après. Et s'il termine avant que s'exécute le wait, ça renvoie 0. -- Philippe Ivaldi. http://www.piprime.fr/
Jogo
> > $$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui interprète étant $PPID ?
$PPID c'est le pid du processus qui a lancé le processus en cours.
Je ne comprends pas tout: $ echo $PPID 6235
Je m'attendais à 6471
Non car l'expansion de $PPID est faite par ton shell intéractif (echo ne connais pas la variable $PPID). Du coup ta commande renvoie le pid du processus qui a lancé ton shell intéractif.
-- Little girls, like butterflies, need no excuse. -- Lazarus Long
> > $$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui
interprète étant $PPID ?
$PPID c'est le pid du processus qui a lancé le processus en cours.
Je ne comprends pas tout:
$ echo $PPID
6235
Je m'attendais à 6471
Non car l'expansion de $PPID est faite par ton shell intéractif (echo
ne connais pas la variable $PPID). Du coup ta commande renvoie le pid
du processus qui a lancé ton shell intéractif.
--
Little girls, like butterflies, need no excuse.
-- Lazarus Long
> > $$, c'est le pid to shell qui interprete le script.
C'est pas plutôt le pid du process courant, le pid du shell qui interprète étant $PPID ?
$PPID c'est le pid du processus qui a lancé le processus en cours.
Je ne comprends pas tout: $ echo $PPID 6235
Je m'attendais à 6471
Non car l'expansion de $PPID est faite par ton shell intéractif (echo ne connais pas la variable $PPID). Du coup ta commande renvoie le pid du processus qui a lancé ton shell intéractif.
-- Little girls, like butterflies, need no excuse. -- Lazarus Long
Ph. Ivaldi
Merci, c'est limpide maintenant. -- Philippe Ivaldi. http://www.piprime.fr/
Merci, c'est limpide maintenant.
--
Philippe Ivaldi.
http://www.piprime.fr/