同一个进程之间共享变量

编写程序打开一个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();

发布了192 篇原创文章 · 获赞 27 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/lovely_girl1126/article/details/103901764