两个进程共享数据的方法

翻译 2014年09月04日 21:55:21

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

相关文章推荐

linux中进程共享内存的2种方法

共享内存可以在两个或多个进程间共享一个给定的内存区域,因为数据不需要在进程之间复制,相比于pipe、socket、file等共享通信方式,共享内存是最快的一种共享机制。linux中共享内存一般有2种方...

activity共享数据方法

  • 2014-10-23 17:39
  • 56KB
  • 下载

同一个应用程序两个实例通过内存映射共享数据

#include #include #include int main(int argc, char * argv[]) { //这里需要注意 const字符串用 LPCSTR,后面也不必_T _T...

ContentProvider实现两个程序间共享数据

实现点击图一中的按钮,在log中查看执行结果---点击联系人信息出现图一下方的listview-----长按其中的某item,如图二----点击查看电话---如图三所示 创建一个android项目c...

DLL入门浅析(5)——使用DLL在进程间共享数据

DLL入门浅析(5)——使用DLL在进程间共享数据 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化...

python进程间共享数据

python的进程间共享数据可以通过multiprocess中的queue,pipe等现成的消息队列传递 也可以通过multiprocessing.manager创建共享的基本数据类型(如list,...

DLL入门浅析(5)——使用DLL在进程间共享数据

在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所...

使用DLL在进程间共享数据

DLL入门浅析(5)——使用DLL在进程间共享数据          在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环...

DLL入门浅析(5)——使用DLL在进程间共享数据

DLL入门浅析(5)——使用DLL在进程间共享数据          在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)