父子进程之间的共享资源
- 在现有的Linux内核在实现fork()函数时往往是一种"写时赋值"的情况
- 父子之间的进程ID是不同的,其余大部分资源都是被复制的
在下面的例子中可以看到,全局变量,局部变量,动态申请的变量都是复制的,互不影响
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>/*父子进程的共享资源*/
int global = 1;/*初始化的全局变量,存在data段*/
int main(void)
{pid_t pid = 1;/*存储进程id*/int stack = 1;/*局部变量,存在栈中*/int *heap;/*指向堆变量的指针*/heap = (int *)malloc(sizeof(int));*heap = 3;/*设置初值3*/pid = fork();/*创建一个新的进程*/if (pid < 0) {perror("fail to fork");exit(-1);}else if (pid == 0) {/*子进程,改变变量的值*/global++;stack++;(*heap)++;/*打印出变量的值*/printf("In sub-process,global: %d,stack: %d,heap: %d\n", global, stack, *heap);exit(0);}else {/*父进程*/sleep(2);/*休眠两秒钟,确保子进程已执行完毕,在执行父进程*/printf("In parent-process,global: %d,stack: %d,heap: %d\n", global, stack, *heap);}return 0;
}
/*父子进程的共享资源*/
父子进程之间的共享资源相关推荐
- 线程与进程之间的共享资源
线程和进程之间的共享资源方式 进程之间的共享资源的方式 1.消息队列 2.共享内存 3.管道(有名管道.无名管道) 4.信号 5.套接字 同一个进程的不同线程之间可以共享的资源 1.堆,由于堆是在进程 ...
- python进程的注意点(进程之间不共享全局变量、主进程会等待所有的子进程执行结束再结束)
1. 进程的注意点介绍 进程之间不共享全局变量 主进程会等待所有的子进程执行结束再结束 2. 进程之间不共享全局变量 import multiprocessing import time# 定义全局变 ...
- linux父子进程之间之间的区别与联系
刚fork之后: 父子相同处: 全局变量..data..text.栈.堆.环境变量.用户ID.宿主目录.进程工作目录.信号处理方式... 父子不同处: 1.进程ID 2.fork返回值 3.父 ...
- 信号实现父子进程之间的同步--sigsuspend的作用
函数原型: #include <signal.h> int sigsuspend(const sigset_t *mask); 作用: 用于在接收到某个信号之前,临时用mask替换进程的信 ...
- 进程之间通信 共享内存
命令 ipcs 命令查看共享内存.消息队列.管道等相关信息 ipcs -m 查看共享内存的信息 代码 创建共享内存 共享内存 关联 进程 分离共享内存 删除共享内存 #include <sys/ ...
- 使用named_mutex实现读写锁,实现进程之间读共享写独占
代码 代码的名称是read_write_mutex.h 这个代码可用,但是未优化,还存在冗余的代码 如果涉及到进程挂掉了,造成进程堵塞,如何解决?还未涉及 //#ifndef BOOST_THREAD ...
- fork后父子进程共享资源
fork后父子进程共享资源 Unix环境高级编程中8.3节中说,"子进程是父进程的副本.例如,子进程获得父进程数据空间.堆和栈的副本.注意,这是子进程所拥有的副本.父进程和子进程并不共享这些 ...
- 同一进程中线程的共享资源以及独占资源
线程之间的共享资源以及独占资源 共享资源 独占资源 共享资源 1.进程申请的堆内存 2.进程打开的文件描述符 3.进程的全局数据(可用于线程之间通信) 4.进程ID.进程组ID 5.进程目录 6.信号 ...
- linux:进程之间的通信
ipc :进程间通信(InterProcess Communication) 1.管道 同一时间是单向的:父读子写,或父写子读 管道中的数据 ,读走就没了 参数是一个整型数的数组,数组的大小是两个 ...
最新文章
- @ConfigurationProperties 注解
- python日志_python日志处理
- kaggle中的Two-Stage比赛规则以及metadata数据的使用规定
- 分数调查 HihoCoder - 1515(带权并查集)
- 美军开发远程人脸识别系统,实现1公里内目标识别
- 获取本机IP(考虑多块网卡、虚拟机等复杂情况)
- 【三维深度学习】多视角立体视觉 MVSNet代码解读
- fastreport iif小于条件_杭州灭菌柜验证需要什么条件
- 漂亮大气!小米武汉总部正式开园:从签约到建成使用仅用时两年
- ThinkPhp学习11
- 第四章 基本TCP套接字编程 第五章 TCP客户/服务器程序实例
- webClient请求JAVA超时解决方案
- 10HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
- 简单的HTML5音乐播放器带歌词滚动,基于jQuery实现歌词滚动版音乐播放器的代码...
- Java整合PayPal支付结账和支出
- 《单域名下整合动网、动易、OBlog程序》
- Openbravo如何新建一个调用
- word/exce转lPDF乱码(思源字体)
- 方舟linux服务器更新,方舟怎么更新服务器版本 | 手游网游页游攻略大全
- 用python做思维导图软件_分享一下python数据处理工具思维导图
热门文章
- 计算机信息的容量单位是什么,信息的基本容量单位是
- Thttpd源程序解析9 thttpd.c文件解析
- AlexNet模型思想详解及核心代码实现
- NFC手机(小米2A刷机到Android4.4)HCE环境搭建
- 新浪企业邮箱服务器怎么设置,新浪企业邮箱|客户端使用
- 使用Python读取和处理安卓传感器数据与CSV读取
- 安卓手机利用蓝牙调试APP搜索不到HC-05模块连接的问题
- SpringBoot结合redis解决PV、UV亿级流量
- 使用opencv库出现的问题
- 2016域控服务器搭建,Windows Server 2016 辅助域控制器搭建