Comment obtenir l’ID de processus (pid) à partir d’un processus enfant forké dans un script shell

Je crois que je peux bifurquer 10 processus enfants d’un processus parent.

Voici mon code:

#/bin/sh fpfunction(){ n=1 while (($n<20)) do echo "Hello World-- $n times" sleep 2 echo "Hello World2-- $n times" n=$(( n+1 )) done } fork(){ count=0 while (($count<=10)) do fpfunction & count=$(( count+1 )) done } fork 

Cependant, comment puis-je obtenir le pid de chaque processus enfant que je viens de créer?

Merci.

Le PID d’un processus enfant en arrière-plan est stocké dans $! .

 fpfunction & child_pid=$! parent_pid=$$ 

Pour l’inverse, utilisez $PPID pour obtenir le PID du processus parent de l’enfant.

 fpfunction() { local child_pid=$$ local parent_pid=$PPID ... } 

En outre, pour ce que cela vaut, vous pouvez combiner les instructions de bouclage en une seule boucle de type C:

 for ((n = 1; n < 20; ++n)); do do echo "Hello World-- $n times" sleep 2 echo "Hello World2-- $n times" done 

A partir du manuel Bash :

!

Développe l’ID de processus de la commande d’arrière-plan (asynchrone) la plus récemment exécutée.

c’est-à-dire, utilisez $! .