linux user group brescia

immagine del castello

Archivio della mailing list

wait

Vernia Damiano melkor.x a tiscali.it
Mer 14 Gen 2004 14:11:36 UTC
On Tue, 13 Jan 2004, marco ghidinelli wrote:
> > 	Come posso fare invece per aspettarne uno qualunque? Devo far
> > partire quattro processi e aspettare. Quando ne termina uno (qualunque,
> > non so se sara' il numero 1!) devo proseguire.
>
> yes > /dev/null
>
> (e ti salvi il pid di yes)
>
> script1 && kill -9 pid_di_yes
> script2 && kill -9 pid_di_yes
> script3 && kill -9 pid_di_yes
>
> wait (pid di yes)
>
> orrendo ma dovrebbe funzionare

	Cosi' pero', se non ho capito male mi resta "yes" in esecuzione
concorrente con gli altri tre processi e mi ruba risorse (che io vorrei
sfruttare appieno).
	Ma mi hai fatto venire un'idea. Se io faccio:

trap mio_script SIGCHLD

mio_script &
mio_script &
mio_script &
mio_script &

wait

	dovrei riuscire a far girare in perpetuo quattro copie dello
stesso script (e se al posto di uno script ci metto una funzione che
richiama il programma che mi interessa...)

	All'interno della funzione posso fare un test per vedere se devo
nuovamente far avviare un nuovo processo. Quando questo test fallisce
eseguo

trap SIGCHLD

	e cosi' non parte piu' nulla. Il wait finale aspetta che tutti i
processi siano finiti, cioe' abbia fatto partire il programma il numero
predeterminato di volte.

	Puo' essere una buona soluzione?

-- 
							Ciriciao
						LtC. Melkor?! B. Xapatan

PS: Forse il "wait" finale e' un po' azzardato, ma cosi' non posso
controllare quanti processi saranno in esecuzione concorrente solo
scelgliendo il numero di chiamate iniziali a "mio_script"?



Maggiori informazioni sulla lista Lug