同一个进程之间共享变量
程序员文章站
2024-01-25 20:02:22
...
编写程序打开一个exe,希望再打开一个exe时可以得到上一个exe共享的信息
#include<stdio.h>
#include<Windows.h>
// data_seg 之间的数据必须初始化否则会放在其他段中
#pragma data_seg("Shared")
int apps = 0;
char sharedwnd[100] = "sds";//共享数据
char sharedwnd2[100] = "sds";//共享数据
#pragma data_seg()
//告诉连接器开关 共享这个变量 RWS ,R read W Write E execute S shared
#pragma comment(linker,"/SECTION:Shared,RWS")
int main()
{
string st1 = sharedwnd;
st1 += "ss";
cout << st1 << endl;
string st2 = sharedwnd2;
st2 += "ss";
cout << st2 << endl;
strncpy(sharedwnd, st1.c_str(), st1.length() + 1);
strncpy(sharedwnd2, st2.c_str(), st2.length() + 1);
if (strcmp(sharedwnd , "sdsss")==0) {
cout << "aaaaa";
}
while (1);
return 0;
}
#pragma data_seg 可以编辑共享变量,
需要注意中间的共享变量定义必须初始化,同时,只支持基本类型,对于string,QString类型不支持,需要进行转换,对共享变量进行重新赋值。
想共享的话 必须开启连接器开关:/SECTION:Shared,RWS,这里的RWS是权限。
string转char[]数组。
strncpy(sharedwnd, st1.c_str(), st1.length() + 1);
char[]数组转Int
int acess=atoi(shared_wnd);
char[]转QString,string,可以直接进行赋值,已经进行了重载
QString s=shared_wnd;
string ss=shared_wnd;
另外char[]数组类型不能直接用==比较大小,需要用strcmp();
上一篇: cocos2dx 坐标系
下一篇: Python 返回值为函数时的布尔值