两个进程共享数据的方法

此方法来自《windows核心编程》第五版447、448页

为实现只能启动一个进程,先创建一个名为“nimei”的段:

#pragma data_seg("nimei")
long aaa=0;
#pragma data_seg()


其中的 aaa 用作计数器使用。然后告诉连接器把这个段设为共享:#pragma comment(linker,"/section:nimei,wrs")

R表示READ,W表示WRITE,E表示EXECUTE,S表示SHARED。

 

原理:这行代码告诉编译器把其中的字符串嵌入到所生成的.obj文件中的一个特殊的段中,这个段名叫“.drectve”。当连接器把所有的OBJ模块合并到一起的时候,连接器会检查每个OBJ模块的“.drectve”段,并将所有的字符串当做是传给连接器的命令行参数。

 

范例代码(用于限制只能启动一个进程)

#include<windows.h>
#include<winnt.h>
#pragma data_seg("nimei")
long aaa=0;
#pragma data_seg()
#pragma comment(linker,"/section:nimei,wrs")
void main()
{
 if(aaa!=0)
  return;
 else
  aaa++;
 int a;//用于阻塞
 cin>>a;//用于阻塞
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值