#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid1, pid2, pid3, pid4;
pid1=fork();
if (pid1!=0) {
pid2=fork();
pid3=fork();
}else {
pid4=fork();
}
return 0;
}
Hallo, Der folgende Code führt 4 Gabeln. Zuerst führt der ursprüngliche Prozess (Lets rufe es P0) die "pid1 = fork()" aus und erzeugt ein Kind (Lasst es P1 rufen). Dann führt der ursprüngliche Prozess erneut pid2 = fork() aus und erstellt ein weiteres Kind (nennen wir es P2). Dann führen sowohl P2 als auch P0 "pid3 = fork()" aus. Das P0 erzeugt also ein drittes Kind (Nennen Sie es P3) und das P2 wird ein Elternteil und erzeugt ein Kind (nennen Sie es P4). Und am Ende, in der else-Anweisung, erstellt das allererste Kind (P1) ein Kind (P5). So ist der Baum wie:mehrere Gabel() in c-Programm
P0
P1 P2 P3
P5 P4
Meine Frage ist: Bin ich richtig oder nicht? Vielen Dank im Voraus.
Verwenden Sie Ihren Debugger und/oder fügen Sie einige Debug 'printf's und überprüfen Sie es selbst - Sie werden viel mehr auf diese Weise lernen. –
Ist das nicht pid2 = fork(); zweimal zurückgeben (Eltern und Kind), also pid3 = fork90; wird zweimal ausgeführt. –
@DavidZimmerman Ja, das ist was der Fragesteller sagt und warum die Zahlen in seinem Baumdiagramm auf 5 gehen. – JeremyP