Bonjour,
Je voudrais faire une sorte de wait qui se declenche sur la fin de n'importe quel process fils ( le wait attend la fin de tous )
pour paralleliser n process et en rajouter un des qu'un des n est fini.
J'ai cherché avec ps, trap et autres mais ce que j'ai trouvé de plus simple a faire est :
Mais ici le nombre de job rapporté par jobs est le double de mes appels à _test ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #!/bin/ksh #set -xv F_jeton=$$.tail echo GO > ${F_jeton} _test() # -------------------------------------------------------------------------- # { sleep $1 echo "fin $1" >> ${F_jeton} echo "fin $1" } #============================================================================# for i in 30 5 10 20 5 15 25 do _test $i & tail -1f ${F_jeton} | while read -r a do #NB=$(ps --ppid $$ |wc -l) NB_JOBS=$( jobs -l | wc -l ) echo "V=$i NB=$NB_JOBS" [[ $NB_JOBS -lt 6 ]] && break done done wait
j'ai donc mis 6 comme limite pour en avoir 3 en // .
Y a t il plus simple ? plus clair ? quelqu'un sait pour quoi j'ai deux jobs par appel à ma fonction ?
MERCI
Partager