两个进程共享数据的方法

此方法来自《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
#include
#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;//用于阻塞
}

你可能感兴趣的:(两个进程共享数据的方法)