Ich versuche UNIX-Programmierung zu lernen und bin auf eine Frage bezüglich fork () gestoßen. Ich verstehe, dass fork () einen identischen Prozess wie der aktuell ausgeführte Prozess erstellt, aber wo beginnt er? Zum Beispiel, wenn ich Code habe
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
Die Ausgabe ist:
Dies ist mit Sicherheit der übergeordnete Prozess.
Welcher Prozess hat dies gedruckt?
Welcher Prozess hat das gedruckt?
Ich dachte, das fork()
schafft den gleichen Prozess, also habe ich anfangs gedacht, dass in diesem Programm der fork()
Aufruf für immer rekursiv aufgerufen wird. Ich vermute, dass ein neuer Prozess, der von erstellt wurde, fork()
nach dem fork()
Aufruf startet ?
Wenn ich den folgenden Code hinzufüge, um zwischen einem übergeordneten und einem untergeordneten Prozess zu unterscheiden,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
Wo beginnt nach dem Aufruf von fork () die Ausführung des untergeordneten Prozesses?
man fork
ist sicher genug, um deine Frage zu beantworten, übrigens