fork system call
-
Hallo,
kann mir jemand sagen (und erklären), wieviele neue Prozesse von folgendem Code erzeugt werden?
for ( i = 0; i < 4; i++ ) { fork(); }
-------------------------------------
www.backpacker-forum.com.au
-
ich schätze 7. nee, eher 15.
weil 4-mal verdoppelt wird. und einen müssen wir streichen, weil nur nach neuen prozessen gefragt wird.
-
volkard schrieb:
ich schätze 7
Begründung?
Oder schreibst du das ironisch weil du denkst es sind offensichtlich 4? Dies ist eine alte Uni-Prüfungsaufgabe und sie gab verhältnismäßig viele Punkte. Kann also nicht ganz so einfach sein. Ich weiß die Lösung nicht, vermute aber es ist nur 1 neuer Prozess, da noch kein exec syscall aufgerufen wurde. Meine Lösung kommt mir aber auch etwas zu simpel vor
und Sinn macht mir das gerade auch nicht...
Wieso 7 ???-------------------------------------
www.backpacker-forum.com.au
-
Ich bin für 15. Die Anzahl der Prozesse wird viermal verdoppelt, aber davon ist ja einer nicht "neu".
-
Danke!
Dann muss ich mir wohl fork() nochmal genauer angucken
Dachte immer, dass damit einfach eine Kopie vom aufrufenden Prozess erzeugt wird. Warum sich in diesem Fall die Prozesse verdoppeln ist mir gerade nicht 100% klar.
-------------------------------------
www.backpacker-forum.com.au
-
SebiAU schrieb:
Danke!
Dann muss ich mir wohl fork() nochmal genauer angucken
Dachte immer, dass damit einfach eine Kopie vom aufrufenden Prozess erzeugt wird.
Ja, dann sind es zwei. Und die Schleife geht bei beiden in die nächste Runde.
Und beide legen dann eine Kopie von sich an...
-
Macht Sinn. Danke nochmals!
-------------------------------------
www.backpacker-forum.com.au
-
SebiAU schrieb:
Hallo,
kann mir jemand sagen (und erklären), wieviele neue Prozesse von folgendem Code erzeugt werden?
for ( i = 0; i < 4; i++ ) { fork(); }
-------------------------------------
www.backpacker-forum.com.auBei i=1 wird ein neuer Prozess erzeugt. Damit laufen 2 Prozesse.
Bei i=2 erzeugen die 2 Prozesse 2 weitere. Damit haben wir 4.
Bei i=3 erzeugen diese 4 Prozesse 4 weitere. Damit haben wir 8.
Dann wird die Schleife (in allen Prozessen) beendet.
Also wurden insgesamt 7 Prozesse erzeugt.
-
Und was passiert bei i=0?
-
volkard schrieb:
Und was passiert bei i=0?
Da kontrolliere ich, ob hier noch jemand mitdenkt
.