Ich habe untersucht, dass während einer Gabelung das Daten- und Code-Segment des Elternprozesses in den Kindprozess dupliziert wird.Segmente, die während fork() dupliziert wurden?
Bitte sehen Sie das Programm unten.
int main()
{
int a = 5;
pid_t pid;
pid = fork();
if(pid == 0)
{
printf("In child a = %d",a);
}
else
{
printf("In parent a = %d",a);
}
return 0;
}
Hier ist ein in dem Stapel-Segment des Eltern-Prozess, wie es in der Funktion erklärt wird, main()
. Der untergeordnete Prozess sollte während fork()
nur Kopie des Codes und des Datensegments des übergeordneten Prozesses und nicht des Stapels abrufen. Aber wenn ich das Programm ausführe, kann ich sehen, dass der Kindprozess auch auf die Variable "a" zugreifen kann. Das bedeutet, dass der Stapel des übergeordneten Prozesses auch in den untergeordneten Prozess kopiert wird.
Bitte sagen Sie mir den Grund dafür und korrigieren Sie mich, wenn mein Verständnis falsch ist.
was also sollte ich verstehen ist das, dass alle Datensegmente: Stapel, Heap, Code und Datensegmente in das Kind vom Elternteil während fork() dupliziert werden? –
Ja. Alles wird dupliziert, es sei denn, es wird als Ausnahme ausgegeben. –
Danke Matthew :) –