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 $!
.