使用内核对象使程序单实例运行:互斥信号量

本文介绍了一种使用Windows内核对象中的互斥信号量来确保应用程序仅以单实例方式运行的方法。这种方法通过创建一个名为'SingleInstance'的互斥对象来防止程序被多次启动。

内核对象是所有Windows进程都可以访问的,因此可以使用其中的互斥信号量和事件对象使程序单实例运行。。

比起原来的IO锁好了很多 = = DEMO如下:

【使用互斥信号量(互斥对象)实现】

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //  CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //  Author: LIN YiQian   
  4. //  Created: 2009/09/16   
  5. //  Describe: 使用内核对象控制程序只能单实例 演示   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include <Windows.h>   
  8. #include <iostream>   
  9. using namespace std;   
  10.   
  11. void main(void)   
  12. {   
  13.     HANDLE hInstance = CreateMutex(NULL, TRUE, "SingleInstance");   
  14.   
  15.     if (hInstance)   
  16.     {   
  17.         if (ERROR_ALREADY_EXISTS == GetLastError())   
  18.         {   
  19.             printf("程序已经启动!");   
  20.   
  21.             system("pause");   
  22.             return;   
  23.         }   
  24.     }   
  25.        
  26.     while (true)   
  27.     {   
  28.         printf("程序运行阿 = = 运行阿 = = 运行阿。。/n");   
  29.         Sleep(100);   
  30.     }   
  31.   
  32.     CloseHandle(hInstance);   
  33.   
  34.     return;   
  35. }  

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值