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

通过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阻塞 开多个程序的效果:


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

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


你可能感兴趣的:(代码,windows,数据,应用)