练习
创建一个子进程,并定义一个全局变量 global = 0,在子进程中修改值为 100,在父子进程打印 global 的值,思考为什么是这样的结果
创建一个子进程,并定义一个全局变量 global = 0,在子进程中修改值为 100,在父子进程打印 global 的值,思考为什么是这样的结果
登录后即可发布作业,立即登录
全部作业 116
运行代码:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int global = 0;
int main(int argc, const char *argv[])
{
pid_t cpid = fork();
if(cpid == -1)
{
perror("create process error");
return -1;
}else if(cpid == 0)
{
global = 100;
printf("child process global : %d\n",global);
}
if(cpid >0)
{
printf("parent process global : %d\n",global);
}
return 0;
}
运行结果:
结论:
子进程创建会拷贝父进程的地址空间,但是修改数据只会生效在子进程地址空间,说明父子进程的地址空间是相互独立的虚拟地址地址空间
正确!思考的不错!