此方法来自《windows核心编程》第五版447、448页
为实现只能启动一个进程,先创建一个名为“nimei”的段:
#pragma data_seg("nimei")
long aaa=0;
#pragma data_seg()
其中的 aaa 用作计数器使用。然后告诉连接器把这个段设为共享:#pragma comment(linker,"/section:nimei,wrs")
R表示READ,W表示WRITE,E表示EXECUTE,S表示SHARED。
原理:这行代码告诉编译器把其中的字符串嵌入到所生成的.obj文件中的一个特殊的段中,这个段名叫“.drectve”。当连接器把所有的OBJ模块合并到一起的时候,连接器会检查每个OBJ模块的“.drectve”段,并将所有的字符串当做是传给连接器的命令行参数。
范例代码(用于限制只能启动一个进程)
#include<windows.h>
#include<winnt.h>
#pragma data_seg("nimei")
long aaa=0;
#pragma data_seg()
#pragma comment(linker,"/section:nimei,wrs")
void main()
{
if(aaa!=0)
return;
else
aaa++;
int a;//用于阻塞
cin>>a;//用于阻塞
}