通过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;
}