Search Results for '프로그램 중복실행'

ATOM Icon

1 POSTS

  1. 2009/04/28 Mutex를 이용한 중복 프로그램 방지 by shiftkey

Mutex를 이용한 중복 프로그램 방지

SuperTask를 만들어서 시작프로그램에 넣어두고
컴퓨터를 리부팅하면 SuperTask에서 지정한 프로그램들이
자동으로 순차적으로 실행되게 해두었다.

그런데 윈도우 서버버전같은경우 원격데스크톱등으로 접속을 하게되면
원격 세션으로 접속하게되어 원격 세션에서 SuperTask를 중복 실행시키게 된다.

이 경우 SuperTask에서 관리하는 프로그램이 죽게되면 원격세션에서 실행되어버리는 경우가 생기는데
이를 방지하기위해 여러방법이 있지만

아무 생각없이 묻지도 따지지도 않고 무개념으로 처리하기에는
Mutex를 이용하는게 젤 쉽고 편한듯한다.

HANDLE CreateMutex(
  LPSECURITY_ATTRIBUTES lpMutexAttributes,
  BOOL bInitialOwner,
  LPCTSTR lpName
);

근데 저거 쓰니 다른 세션에서 계속 뜨더라
분명 세션끼리 중복실행 안된다고 했는데 되길래 
"마소 ㅄ새퀴들......"이라고 했는데(또 빌형님께 죄를 짓고 말았다.)

MSDN을 보니 이런글이 깨알만하게 적혀있더라.

Terminal Services:  The name can have a "Global\" or "Local\"
prefix to explicitly create the object in the global or session name space. The
remainder of the name can contain any character except the backslash character
(\). For more information, see Kernel Object
Namespaces.


"오~ 빌형님께 죄를 ......"

그래서 프로그램명에 문자열인데 설마 하며 "Global\프로그램명" 했더니 역시나 안되더라.
"개새끼 빌형은 뭔형......"

혹시나 해서 "Global\\프로그램명"했더니 되더라.(그냥 예제에 \\로 표시해주지 -ㅅ-;)
완소 빌형;;;

* 예제 가져온곳 : 네모 반창고

//Global Variant
HANDLE m_hMutex;

Bool CTest::CheckValidApp()
{
DWORD dwError;

m_hMutex = ::CreateMutex( NULL, TRUE, "APP_NAME" );
dwError = ::GetLastError();

if( m_hMutex == NULL )
return FALSE;

if( dwError == ERROR_ALREADY_EXISTS )
{
::ReleaseMutex( m_hMutex );
::CloseHandle( m_hMutex );
return FALSE;
}
return TRUE;
}

//* 실행 중인 프로그램이 종료가 되기전 반드시 Mutex를 해제 하는 로직이 들어가야 합니다. 반드시...

Bool CTest::ReleaseMutex()
{
::ReleaseMutex( m_hMutex );
::CloseHandle( m_hMutex );
m_hMutex = NULL;
}
//참조 : http://msdn.microsoft.com/en-us/library/ms682411.aspx

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2009/04/28 11:15 2009/04/28 11:15
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/215


블로그 이미지

Shiftkey가 살아가는 이런 저런 이야기......

- shiftkey

Notices

Archives

Authors

  1. shiftkey

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
161232
Today:
13
Yesterday:
243