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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值