Thread Terminal schliessen mit Perl (20 answers)
Opened by meier19 at 2009-03-21 15:44

topeg
 2009-03-22 15:15
#119683 #119683
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Das mit der Datei ist allgemein üblich, um zu markieren, ob ein Programm schon läuft. Pack jetzt noch die ProzessId des Programmes hinein, dann kann die zweite Instanz testen, ob die die Erste noch läuft.
Die Regel ist allgemein:
Existiert die PID noch?
Wenn nein,das Erste wurde unerwartet beendet. Das Programm starten, Meldung ausgeben: "Programm wurde beim letzten Start unerwartet beendet, Installation erneut beginnen?", Datei überschreiben.

Wenn ja, enthält die KommandoZeile den eigenen Programmnamen?
wenn nein, es ist wahrscheinlich ein anderes Programm mit der selben PID, das Erste wurde unerwartet beendet. Programm starten, Meldung ausgeben "Programm wurde beim letzten Start unerwartet beendet, Installation erneut beginnen?", Datei überschreiben.

Wenn ja dann läuft das Programm schon. (mit größter Wahrscheinlichkeit)
Programm sofort ohne weitere Aktionen beenden.
Die zweite Instanz könnte z.B mit "SIG_USR1" oder "SIG_USR2" (siehe man kill) der ersten mitteilen, dass sie gestartet wurde und die erste Instanz könne eine Nachricht anzeigen, das dies nicht nötig ist oder so.

Damit bist du auf der sicheren Seite, denn du kannst dir nie sicher sein, ob das Programm wirklich die Datei löscht. Es gibt eine Reihe von Situationen in denen das nicht passiert. (kill -9, Computer ausschalten, remount readonly, etc.)

View full thread Terminal schliessen mit Perl