이녁 하늘 아래

PureBASIC 배우기 / 뮤텍스(Mutex) 활용 - 고급 기술 본문

Autoit3 및 PureBASIC

PureBASIC 배우기 / 뮤텍스(Mutex) 활용 - 고급 기술

인생은 다 그런거야 2026. 8. 8. 21:31
프로그램 중복 실행을 방지하려면 뮤텍스(Mutex) 활용

 

 

PureBasic에서 프로그램 중복 실행을 방지하려면 뮤텍스(Mutex)를 활용하는 것이 가장 깔끔하고 확실합니다.

소스 코드의 최상단(EnableExplicit 바로 밑 또는 메인 로직 시작 부분)에 뮤텍스 생성 및 검사 코드를 추가해 주시면 됩니다.

 

수정 방법

소스 코드의 === 메인 로직 === 시작 부분에 아래와 같이 뮤텍스 확인 로직을 추가합니다.

 


; === 메인 로직 ===

; --- 중복 실행 방지 (Mutex 활용) ---
Define MutexName.s = "Global\MyUniqueAppMutex_IFWRUN" ; 고유한 뮤텍스 이름 지정
Define hMutex.i = CreateMutex_(#Null, #True, MutexName)

; 이미 뮤텍스가 존재할 경우 (프로그램이 실행 중인 경우)
If hMutex And GetLastError_() = #ERROR_ALREADY_EXISTS
  CloseHandle_(hMutex)
  
  ; 중복 실행 안내 메시지 출력
  MessageRequester("알림", "프로그램이 이미 실행 중입니다.", #PB_MessageRequester_Warning)
  End ; 신규 실행 프로세스 종료
EndIf

; --- 기존 로직 시작 ---
Define AppDir.s = GetPathPart(ProgramFilename())
Define ImageWPath.s = AppDir + ".....
; ... (이하 생략) ...

 

중복 실행 안내 메시지 출력

 

 

[동작 원리 및 특징]

  • CreateMutex_: 시스템 전체에서 공유되는 고유한 이름을 가진 뮤텍스를 생성합니다.
  • #ERROR_ALREADY_EXISTS: 다른 프로세스(이전에 실행한 프로그램)가 이미 동일한 뮤텍스를 소유하고 있으면 이 오류 코드가 반환되어 중복 실행 여부를 판단합니다.
  • 자동 해제: 프로그램이 종료(End)되면 Windows OS가 해당 뮤텍스 핸들을 자동으로 해제하므로 별도로 닫아주지 않아도 안전하게 작동합니다.

 

Comments