打印
[C语言]

父子进程之间怎么同步全局变量

[复制链接]
1947|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
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 | 只看该作者
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避免冲突。

使用特权

评论回复
5
blc220| | 2018-10-19 08:29 | 只看该作者
yanghelovehuang 发表于 2018-10-18 18:38
我是linux 平台下的c语言

linux下,ggc、clang编译器,现在都可以直接使用原子变量类型。

使用特权

评论回复
6
blc220| | 2018-10-19 08:37 | 只看该作者
john_lee 发表于 2018-10-18 22:27
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避 ...

对比原子变量,使用互斥量保护内存,cpu的开销要大一些,还要防止线程锁死

使用特权

评论回复
7
yanghelovehuang|  楼主 | 2018-10-19 10:46 | 只看该作者
john_lee 发表于 2018-10-18 22:27
两个进程的数据空间是各自独立的,即使是父子进程。建议你开共享内存来同步数据,可能要做好互斥访问等等避 ...

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

2018-10-19_10.46.03.jpg (179.59 KB )

2018-10-19_10.46.03.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝