print(f"Process {os.getpid()} au niveau {level}") # Imprimer l'ID et le niveau du processus
# Créer l'enfant de gauche
pid_left =os.fork()
si pid_left ==0 :# Processus enfant
create_binary_tree(profondeur, niveau + 1)
os._exit(0) # Important :quittez le processus enfant pour éviter une récursion infinie
# Créer le bon enfant
pid_right =os.fork()
si pid_right ==0 :# Processus enfant
create_binary_tree(profondeur, niveau + 1)
os._exit(0) # Important :quittez le processus enfant pour éviter une récursion infinie
# Le processus parent attend que les enfants terminent (facultatif, mais bonne pratique)
os.waitpid(pid_left, 0)
os.waitpid(pid_right, 0)
si __name__ =="__main__":
si len(sys.argv) !=2 :
print("Utilisation :python binaire_tree.py ")
sys.exit(1)
essayer:
profondeur =int(sys.argv[1])
si profondeur <0 :
print("La profondeur doit être un entier non négatif.")
sys.exit(1)
create_binary_tree (profondeur)
sauf ValueError :
print("Valeur de profondeur non valide. Veuillez saisir un nombre entier.")
sys.exit(1)
```
Comment exécuter :
1. Enregistrer : Enregistrez le code sous `binary_tree.py`.
2. Exécuter à partir de la ligne de commande : `python binaire_tree.py ` où `` est la profondeur souhaitée de l'arborescence (par exemple, `python binaire_tree.py 3`).
Considérations importantes :
* Gestion des erreurs : Le code inclut une gestion des erreurs de base pour les arguments de ligne de commande non valides.
* Fin du processus : Les appels `os._exit(0)` sont cruciaux. Sans eux, chaque processus enfant créerait de manière récursive davantage de processus, conduisant à une explosion incontrôlée de processus.
* Utilisation des ressources : Soyez conscient de la croissance exponentielle des processus. Une profondeur de 4 va déjà créer de nombreux processus. Une profondeur de 10 fera probablement planter votre système.
* Gestion des processus : Les appels `os.waitpid()` sont facultatifs mais recommandés pour une meilleure gestion des processus. Ils garantissent que le processus parent attend que ses enfants aient terminé avant de quitter. Sans eux, votre processus parent pourrait se terminer avant la fin de certains processus enfants.
* Limites du système d'exploitation : Le nombre maximum de processus que vous pouvez créer est limité par votre système d'exploitation.
Cette version améliorée offre une meilleure gestion des erreurs et des processus, la rendant plus sûre et plus robuste. N'oubliez pas de toujours commencer par de petites valeurs de « n » pour tester et comprendre le comportement avant d'essayer des valeurs plus grandes.