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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage