print(f"Proces {os.getpid()} op niveau {level}") # Druk de proces-ID en het niveau af
# Maak het linkerkind
pid_left =os.fork()
if pid_left ==0:# Onderliggend proces
create_binary_tree(diepte, niveau + 1)
os._exit(0) # Belangrijk:sluit het onderliggende proces af om oneindige recursie te voorkomen
# Creëer het juiste kind
pid_right =os.fork()
if pid_right ==0:# Onderliggend proces
create_binary_tree(diepte, niveau + 1)
os._exit(0) # Belangrijk:sluit het onderliggende proces af om oneindige recursie te voorkomen
# Ouderproces wacht tot kinderen klaar zijn (optioneel, maar goede gewoonte)
os.waitpid(pid_left, 0)
os.waitpid(pid_right, 0)
als __naam__ =="__hoofd__":
als len(sys.argv) !=2:
print("Gebruik:python binary_tree.py ")
sys.exit(1)
poging:
diepte =int(sys.argv[1])
als diepte <0:
print("Diepte moet een niet-negatief geheel getal zijn.")
sys.exit(1)
create_binary_tree(diepte)
behalve ValueError:
print("Ongeldige dieptewaarde. Voer een geheel getal in.")
sys.exit(1)
```
Hoe uit te voeren:
1. Opslaan: Sla de code op als `binary_tree.py`.
2. Uitvoeren vanaf de opdrachtregel: `python binary_tree.py ` waarbij `` de gewenste diepte van de boom is (bijvoorbeeld `python binary_tree.py 3`).
Belangrijke overwegingen:
* Foutafhandeling: De code bevat basisfoutafhandeling voor ongeldige opdrachtregelargumenten.
* Procesbeëindiging: De `os._exit(0)` aanroepen zijn cruciaal. Zonder hen zou elk kindproces recursief meer processen creëren, wat zou leiden tot een ongecontroleerde explosie van processen.
* Bronnengebruik: Houd rekening met de exponentiële groei van processen. Een diepte van 4 zal al veel processen creëren. Een diepte van 10 zal uw systeem waarschijnlijk laten crashen.
* Procesbeheer: De `os.waitpid()` aanroepen zijn optioneel, maar worden aanbevolen voor een beter procesbeheer. Ze zorgen ervoor dat het ouderproces wacht tot de kinderen klaar zijn voordat het wordt afgesloten. Zonder deze processen zou uw bovenliggende proces kunnen eindigen voordat sommige onderliggende processen zijn voltooid.
* Beperkingen van het besturingssysteem: Het maximale aantal processen dat u kunt maken, wordt beperkt door uw besturingssysteem.
Deze verbeterde versie zorgt voor een betere foutafhandeling en procesbeheer, waardoor het veiliger en robuuster wordt. Vergeet niet om altijd te beginnen met kleine waarden van `n` om het gedrag te testen en te begrijpen voordat u grotere waarden probeert.