子地址空间会影响父地址空间吗

时间:2019-06-24 20:32:57

标签: process operating-system fork pid waitpid

我想通过以下示例了解孩子的地址空间是否影响父母的地址空间。因此,父级将孩子的更改后的值设为15还是值5。我了解到孩子的地址空间不受父级孩子的地址空间的影响,但是在这种情况下输出是什么?值的输出是否将为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 :(得分:0)

由于定义了fork在类似UNIX(请参阅https://en.wikipedia.org/wiki/Fork_(system_call))的系统中的工作方式,因此肯定会输出5,因为child只接收父虚拟内存的副本。 您也可以参考man(2)fork:https://linux.die.net/man/2/fork