CreateMutex
The CreateMutex function creates or opens a named or unnamed mutex object.
HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName); 在調(diào)用這個(gè)函數(shù)的時(shí)候,程序會(huì)以lpMutexAttributes和bInitialiOwner參數(shù)在當(dāng)前的程序上下文中創(chuàng)建一個(gè)lpName指示的名字的Mutex,如果創(chuàng)建成功,程序返回新創(chuàng)建的mutex對(duì)象的handle,如果創(chuàng)建失敗,返回NULL,用戶可以調(diào)用GetLastError函數(shù)獲取錯(cuò)誤代碼。如果lpName指示的這個(gè)mutex對(duì)象已經(jīng)存在(程序已經(jīng)存在運(yùn)行實(shí)例),則函數(shù)返回已經(jīng)存在的該mutex對(duì)象的句柄,調(diào)用GetLastError會(huì)得到ERROR_ALREADY_EXISTS的錯(cuò)誤。
那么我們程序要做的就是創(chuàng)建這個(gè)mutex對(duì)象,檢測(cè)錯(cuò)誤代碼,若是ERROR_ALREADY_EXISTS,則表明程序已經(jīng)運(yùn)行。
這是代碼:
CreateMutex(NULL,TRUE,"TestMutex"); DWORD lastError=GetLastError(); if(ERROR_ALREADY_EXISTS==lastError) { MessageBox(NULL,"An instance of thie program already exists!","Information",MB_OK); return 1; }
posted on 2009-05-17 16:45 悟山 閱讀(655) 評(píng)論(2) 編輯 收藏 引用
我怎么記得Mutex是不能跨進(jìn)程的,Semaphore才可以。 回復(fù) 更多評(píng)論
Windows下可以,只用于線程的叫critical_section 回復(fù) 更多評(píng)論
Powered by: C++博客 Copyright © 悟山