Влияет ли дочернее адресное пространство на адресное пространство родителя - PullRequest
0 голосов
/ 24 июня 2019

В приведенном ниже примере я хочу узнать, влияет ли адресное пространство ребенка на адресное пространство родителя. Таким образом, родитель получит измененное значение дочернего элемента до 15 или получит значение 5. Я узнаю, что адресное пространство дочернего элемента не зависит от его родительского, но что будет выходным в этом случае? Будет ли значение value равным 20, поскольку значение увеличивается на 15 для дочерней части?

int value = 5;
int main(){
   pid_t pid;
   pid = fork();

   if (pid == 0){
    value +=15;
    return 0;
   }

   else if(pid > 0){
    wait(NULL);
    printf("Parent: value = '%d', value);    // Line A
    return 0;
   }
}

1 Ответ

0 голосов
/ 24 июня 2019

Из-за определения того, как fork работает в UNIX-подобных системах (см. https://en.wikipedia.org/wiki/Fork_(system_call)) системы, определенно выводится 5, потому что child получает только копию виртуальной памяти родителя. Вы также можете обратиться к man (2) вилка: https://linux.die.net/man/2/fork.

...