Ich versuche, ein Programm zu erstellen, das fork() verwendet, um einen neuen Prozess zu erstellen. Die Beispielausgabe sollte wie folgt aussehen:
Dies ist der Prozess des Kindes. Meine PID ist 733 und die ID meines Elternteils ist 772.
Dies ist der übergeordnete Prozess. Meine pid ist 772 und die id meines Childs ist 773.
So habe ich mein Programm programmiert:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());
return 0;
}
Das Ergebnis ist die Ausgabe:
Dies ist der Prozess des Kindes. Meine PID ist 22163 und die ID meines Elternteils ist 0.
Dies ist der Prozess des Kindes. Meine PID ist 22162 und die ID meines Elternteils ist 22163.
Warum wird die Anweisung zweimal gedruckt, und wie kann ich erreichen, dass die ID des Elternteils richtig angezeigt wird, nachdem die ID des Kindes im ersten Satz angezeigt wurde?
EDITAR:
#include <stdio.h>
#include <stdlib.h>
int main() {
int pid = fork();
if (pid == 0) {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}
return 0;
}