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ß
wie funktioniert fork()
-
- prolinux-forum-admin
- Beiträge: 1444
- Registriert: 26. Jun 2004 21:18
- Kontaktdaten:
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 ...
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 ...
When all else fails, read the instructions .