Adressraum nach Gabelruf
Wenn der Aufruf von fork () sys vom Prozess ausgeführt wird, wird ein untergeordneter Prozess daraus generiert. Alle Codes, die auf den Aufruf von fork () folgen, werden in die neuen physischen Speicherseiten kopiert, d. H. In Frames. Ich kann den virtuellen Speicherteil des untergeordneten Prozesses nicht visualisieren. Im folgenden Code ist die Adresse der Variablen char sowohl für untergeordnete als auch für übergeordnete Elemente gleich.
#include <stdio.h>
#include <sys/types.h>
int main(void)
{
pid_t pid;
char y='Y';
char *ptr;
ptr=&y;
pid = fork();
if (pid == 0)
{
y='Z';
printf(" *** Child process ***\n");
printf(" Address is %p\n",ptr);
printf(" char value is %c\n",y);
sleep(5);
}
else
{
sleep(5);
printf("\n ***parent process ***\n",&y);
printf(" Address is %p\n",ptr);
printf(" char value is %c\n",y);
}
}
und seine Ausgabe:
*** Child process ***
Address is 69002894
char value is Z
***parent process ***
Address is 69002894
char value is Y