Mehrere Ausführungen eines Programms verhindern
-
Hallo,
ich habe ein Netzwerk Anwendung geschrieben,
welches nur einmal auf dem Rechner laufen
soll(eine Instans). Doch wie kann ich das
realisieren?
Ich hoffe ihr könnt mir weiterhelfen.

Mfg
Alpha_Coder
-
-
Vielen Dank.
Ich glaube die Lösung mit CreateMutex() ist für mich die richtige.
Mfg
Alpha_Coder
-
Dieser Artikel solltehier unbedingt auch erwähnt werden:
http://www.codeproject.com/KB/cpp/avoidmultinstance.aspx
-
Danke Martin Richter.
Nach meiner Meinung ist die Möglichkeit
mit CreateMutex() bis jetzt die beste.Mfg
Alpha_Coder
-
Ich finde es interessant, dass zwar fast alle eine Mutex empfehlen (was auch meine Lösung ist), aber es kaum jemand so macht wie ich.
Ich erstelle immer eine Named-Mutex, und versuche diese dann mit Timeout 0 zu locken (WaitForSingleObject).
Wenns geht -> ich bin erste Instanz.
Wenns nicht geht -> ich bin nicht erste Instanz.Die Mutex wird dabei nie mit ReleaseMutex freigegeben, darum kümmert sich das OS netterweise.
-
Ich nehme immer nen Lock-File

-
Ich verwende einen Mutex in Verbindng SharedMemory/MemoryMapped File in der ich das Fenster Handle der vorherigen Instanz hinterlege und damit aktivieren kann. Und ich kann sogar Befehlszeilen Parameter dadurch weiterreichen.
-
Martin Richter schrieb:
Ich verwende einen Mutex in Verbindng SharedMemory/MemoryMapped File in der ich das Fenster Handle der vorherigen Instanz hinterlege und damit aktivieren kann. Und ich kann sogar Befehlszeilen Parameter dadurch weiterreichen.
Mach ich ähnlich, nur schreibe ich die Prozess ID statt des Fensterhandles, damit könnte ich die Einschränkungen auch für Prozesse ohne Fenster machen.