简单的方法让一个应用程序只运行一个实例

xiaoxiao2021-02-28  34

关于这个问题,我以前写了篇小总结,题为“简单的方法让一个应用程序只运行一个实例”: 一个程序可以运行多个实例(进程),那我们如何让它仅运行一个实例呢?很简单,使用#pragma编译器指令在进程的地址空间内创建一个“共享节”就可以达到目的,这个“共享节”里的数据为多个运行的进程所共享,这样我们通过设置一个变量比如:unsigned g_nInstanceCount;作为运行实例的计数,在程序入口处检测一下g_nInstanceCount是否为1,true则禁止运行,否则g_nInstanceCount++并运行一个实例。 具体如下: #pragma data_seg("Shared")//这个共享节叫做Shared unsigned g_nInstanceCount =0;//计数初始为0 #pragma data_seg() //设置完毕 #pragma comment(linker,"/:SECTION:Shared,RWS")//这句话告诉连接器,我要将Shared设为读写共享 好了,让我们实际动手来做一个小的例子看看: /********************************************    基于控制台的 ********************************************/ #include <iostream> using namespace std; #pragma data_seg("Shared") unsigned g_nInstanceCount = 0; #pragma data_seg() #pragma comment(linker,"/SECTION:Shared,RWS") int main() {         if(g_nInstanceCount>=1)    {      cout<<"Can only running an instance!"<<endl;      return 0;   }    g_nInstanceCount++;  //实例计数加1       cout<<"This is a console program!"<<endl;       system("pause");       return 0; } 运行第一个实例:......  三个线程交错输出
转载请注明原文地址: https://www.6miu.com/read-2626457.html

最新回复(0)