Page 1 of 1

wie funktioniert fork()

Posted: 06. Feb 2007 12:34
by Systemmaus
Hallo zusammen,

ich muss folgende Aufgabe lösen:

Welche Welche Ausgabe erzeugt das folgende Programm?

#include <stdio.h>
#include <unistd.h> // wg. getpid
int x = 0;
int main()
{
fork();
fork();
fork();
printf("pid=%d x=%d\n", getpid(), x++);
}

ich würde sagen, es werden 4 Prozesse erzeugt (1 Vater und 3 Kinder) und es wird nur ein pid ausgegeben. x = 1
Oder werden es eigentlich 8 Prozesse erzeugt, da jedes Kind auch geklont wird???? Werden dann auch 8 pid ausgegeben???

Ich wollte das Programm unter Windows testen, leider funktioniert das nicht und mein Linux-Rechner ist zur Zeit defekt.

Ich würde für jede Antwort dankbar!

Gruß

Posted: 06. Feb 2007 14:19
by klopskuchen
fork();
Vater
Kind_1
fork();
Vater, Kind_1
Kind_2 , Kind_1_1
fork();
Vater, Kind_1, Kind_2, Kind_1_1
Kind_3, Kind_1_1, Kind_2_1, Kind_1_2

Macht nach drei fork()-Aufrufen acht Prozesse (einschl. erster Vater), nach vier Aufrufen sechzehn, nach fünf Aufrufen 32 ...