Abfrage: eigenes Programm läuft bereits

heirobebe

Grünschnabel
Hi,

mein Standard-C Programm soll nur einmal gestartet werden.
Wie kann ich einen 2. Start verhindern?
Wie kann ich bestehende Processe abfragen und welche includes muss ich benutzen?

Gruss
 
Unter Windows geht das am einfachsten mit einem Mutex.

Du erzeugst zu Beginn des Programms ein Mutex mit einem eindeutigen Namen. Wenn es das Mutex schon gibt, erhältst du über GetLastError einen spezifischen Fehler zurück:

Code:
  HANDLE hMutex;

  hMutex = CreateMutex( NULL, TRUE, "MeinEigenesMutex" );
  if ( GetLastError() == ERROR_ALREADY_EXISTS )
  {
    // Mein Programm läuft bereits, mich selbst beenden
    ReleaseMutex( hMutex );
    CloseHandle( hMutex );
    return;
  }

Nicht vergessen, am Ende des Programms das Mutex wieder freizugeben (Ja, das muss beides sein):
Code:
ReleaseMutex( hMutex );
CloseHandle( hMutex );
 
Zurück