创建进程-课后任务
我要参与
创建进程-课后任务
学习任务 2.3k
等8人参与
来源: 第12周 / 物联网/嵌入式工程师

练习

创建一个子进程,并定义一个全局变量 global = 0,在子进程中修改值为 100,在父子进程打印 global 的值,思考为什么是这样的结果

去发布

登录后即可发布作业,立即

我的作业

全部作业 116

Alexander0920

运行代码:

#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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
代码块
复制 预览
复制成功!

运行结果:
图片描述
结论:
子进程创建会拷贝父进程的地址空间,但是修改数据只会生效在子进程地址空间,说明父子进程的地址空间是相互独立的虚拟地址地址空间

提交于  2023-05-02 10:08:26
评论 1
讲师点评
评分:100
大白老师

正确!思考的不错!

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师