您的位置:首页 > 其它

Windows_通过共享数据段(data_seg())实现应用程序只能被创建一次

2015-09-10 09:32 381 查看
通过data_seg()编译指令共享数据段实现程序不能多开:

如果不用cin进行阻塞,则程序会退出(达不到效果)

没有用cin阻塞的代码:

#include <iostream>
#include <Windows.h>
#include <tchar.h>
//#include "Share.h"

using namespace std;

#pragma data_seg("flag_data")
int app_count = 0;
#pragma data_seg()

#pragma comment(linker,"/SECTION:flag_data,RWS")

int main(){

	++app_count;

	if (app_count > 1)
	{
		MessageBox(NULL, _T("More than one"), _T("Haha"), 0);
	}
	

	//int a;
	//cin >> a;

	return 0;
}


没用用cin阻塞的效果:进程名为Share_Information:






可以看出进程已经被杀死:

用cin阻塞的代码:

示例代码:

#include <iostream>
#include <Windows.h>
#include <tchar.h>
//#include "Share.h"

using namespace std;

#pragma data_seg("flag_data")
int app_count = 0;
#pragma data_seg()

#pragma comment(linker,"/SECTION:flag_data,RWS")

int main(){

	++app_count;

	if (app_count > 1)
	{
		MessageBox(NULL, _T("More than one"), _T("Haha"), 0);
	}
	

	int a;
	cin >> a;

	return 0;
}


用cin阻塞开多个程序的效果:













内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: