Esempio 03 – Fork annidate ed esecuzione non deterministica

Vediamo un esempio un po’ più complesso con più fork messe in campo. Quanti processi vengono generati dal codice scritto? In allegato un diagramma disegnato sul sito draw.io con il formato xml modificabile/importabile o il png per visionarlo semplicemente.

'''
Fork annidate ed esecuzione non deterministica
'''
import os
import time
import sys

#valorizziamo 3 PID a zero (non necessario)
pid1 = 0
pid2 = 0
pid3 = 0

pid1 = os.fork()
pid2 = os.fork()
pid3 = os.fork()

if pid1 == 0 or pid2 == 0 or pid3 == 0 :
  print ("sono il processo figlio con PID {}".format(os.getpid()))
  print ("mio padre ha PID {}".format(os.getppid()))
  time.sleep(1)
  os._exit(1)
else :
  time.sleep(2)
  print ("sono il processo padre con PID {}".format(os.getpid()))

Ultima modifica 10 Novembre 2023