[C语言] 父子进程之间怎么同步全局变量

[复制链接]
2199|6
 楼主| yanghelovehuang 发表于 2018-10-18 14:47 来自手机 | 显示全部楼层 |阅读模式
父子进程之间如果有一个进程改变了全局变量,另一个进程却不能同步, 请问该怎么同步两者的全局变量
blc220 发表于 2018-10-18 15:26 | 显示全部楼层
使用原子变量 ,1、windows 下使用InterlockedExchange函数 ,2、支持c++11的编译器都可以用 atomic_int
 楼主| yanghelovehuang 发表于 2018-10-18 18:38 来自手机 | 显示全部楼层
blc220 发表于 2018-10-18 15:26
使用原子变量 ,1、windows 下使用InterlockedExchange函数 ,2、支持c++11的编译器都可以用 atomic_int ...

我是linux 平台下的c语言
john_lee 发表于 2018-10-18 22:27 | 显示全部楼层
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避免冲突。
blc220 发表于 2018-10-19 08:29 | 显示全部楼层
yanghelovehuang 发表于 2018-10-18 18:38
我是linux 平台下的c语言

linux下,ggc、clang编译器,现在都可以直接使用原子变量类型。
blc220 发表于 2018-10-19 08:37 | 显示全部楼层
john_lee 发表于 2018-10-18 22:27
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避 ...

对比原子变量,使用互斥量保护内存,cpu的开销要大一些,还要防止线程锁死
 楼主| yanghelovehuang 发表于 2018-10-19 10:46 来自手机 | 显示全部楼层
john_lee 发表于 2018-10-18 22:27
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避 ...

您好我也是这样想的  可是我要共享的全局变量是文件描述符FILE *fp 我模拟了个实验但是子进程没有取到父进程的赋值fp 代码如下:请问代码有什么问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部