PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppeltes Ausführen verhindern



Vitus
06-12-2005, 11:21
Hallo,

ich habe ein Java-Anwendung (Swing) und möchte, dass diese nur einmal ausgeführt wird und kein zweites Mal gestartet werden kann.

Hat jemand diesbezüglich Erfahrung?

Thx a lot,
Vitus

Caveman
06-12-2005, 12:22
Hallo Vitus,

ich habe gerade ein ähliches Problem mit einem C-Programm bzw. mit einem Perl-Programm (mit einem von beiden).


Es gibt hier zwei Ansätze (die ich in Betracht ziehe).

- Der eine funktioniert mit Semaphore:
Gibt's natürlich auch für Java - schau hierzu einfach mal in die API unter "Class Semaphore"
(Hab hier im Forum leider nichts weltbewegendes hierzu gefunden)

- Ich werde wahrscheinlich in Richtung des zweiten Ansatzes gehen:
Da ich auch auf eine Datei zugreife, werde ich diese zu Beginn mit dem ersten Aufruf der ersten Anwendung für weitere Zugriffe sperren. Startet nun eine weitere Anwendung des Programms, würde es natürlich gern auf die selbe Datei zugreifen, da dies dann nicht möglich ist, wird jeder weitere Programmaufruf wieder abgebrochen, solange die erste Anwendung noch läuft.

schönen Gruß
Caveman

Vitus
06-12-2005, 12:25
Hallo,

kan ich davon ausgehen, dass die Datei gelöscht wird, wenn das Programm beendet wurde oder sogar gekilled?

Caveman
06-12-2005, 12:35
Bei mir wird sie sicher nicht gelöscht, da es eine log-Datei ist.
Sie wird nur für weitere Lese-/Schreib-Zugriffe gesperrt. Diese Sperre wird spätestens beim Beenden der ersten Anwendung aufgehoben.
Möchte man die Datei nach dem Beenden nicht mehr haben, so muss man sie explizit löschen.

Boron
06-12-2005, 14:51
Oder du schaust dir mal an , was mit "Netzwerkprogrammierung" möglich ist.

Ich denke da an so etwas:
Dein Programm öffnet einen Socket auf einem von dir bestimmten Port (sagt man das so?).
Wenn das Programm ein zweites mal gestartet wird, wird der selbe Vorgang wiederholt und schlägt fehl, weil die erste Instanz des Programms ja zuerst da war.

Und schon kannst du mit einer netten Meldung das Programm beenden.

Das mit der Datei ist zu unsicher.