Ich bin verwirrt darüber. Ich habe gelesen, dass child, wenn ein Kind von einem übergeordneten Prozess erstellt wird, eine Kopie des Adressraums seiner Eltern erhält. Was bedeutet es hier durch kopieren? Wenn ich den Code unten verwende, dann druckt er die gleichen Adressen der Variablen 'a', die sich in allen Fällen auf dem Heap befindet. im Falle von Kind und Eltern. Was passiert hier?Unterschied zwischen dem Adressraum des übergeordneten Prozesses und seinem untergeordneten Prozess in Linux?
int main() { pid_t pid; int *a = (int *)malloc(4); printf ("heap pointer %p\n", a); pid = fork(); if (pid < 0) { fprintf (stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { printf ("Child\n"); printf ("in child heap pointer %p\n", a); } else {
wait (NULL); printf ("Child Complete\n"); printf ("in parent heap pointer %p\n", a); exit(0); }
}
Beachten Sie, dass in ** Eltern und Kind ** ** ** die ** Adresse ** der Variablen "a" nicht gedruckt wird. Sie drucken den ** Wert ** der Variablen "a" (vom Typ Zeiger). –
ja das stimmt. Danke :) – abs
Haben Sie eine Antwort gesehen, die Ihnen gefallen hat? –