Abbiamo già visto in precedenza la chiamata wait(), come permetta ad un padre di attendere la terminazione dei suoi figli, in questo caso tutti i figli, a prescindere che siano uno o più. Esiste anche una variante per cui si può forzare il padre ad attendere solo un determinato figlio di cui è noto il PID.
Vediamo un esempio in cui il padre attende la fine del processo più lungo.
import os
import time
#creiamo il solito figlio
pid1 = os.fork()
if pid1 is 0:
print("Sono il primo figlio " + str(os.getpid()))
time.sleep(4)
print ("zzzzz.....")
os._exit(1);
else:
#sono il padre, riforko
pid2 = os.fork()
if pid2 == 0:
print("Sono il secondo figlio " + str(os.getpid()))
time.sleep(1)
os._exit(2);
else:
print ("Sono il padre "+ str(os.getpid()) +" in attesa del figlio più lento" )
status = os.waitpid(pid1,0)
print("Il mio figlio uscito è: "+ str(status[0]) + ", lo seguo.")
Ultima modifica 10 Marzo 2023