Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5180[/thread]

Mehrere Instanzen verhindern?

Leser: 1


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
BratHering
 2006-05-09 19:05
#45383 #45383
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
Hallo,

ist es möglich ein Perl/Tk Programm so zu schreiben, dass es nicht möglich ist mehrere Instanzen davon zu bilden?
Also d.h. wenn ich das Programm starte und es erscheint das Programmfenster und ich versuche es nochmal zu starten während eine Instanz bereits läuft, dass dies eben verhindert wird.
Momentan sehen meine Tk Programme so aus, dass so oft ich diese doppelklicke/starte so viele fenster habe ich am laufen.

Danke.


MfG
Brathering :)\n\n

<!--EDIT|BratHering|1147187242-->
renee
 2006-05-09 19:12
#45384 #45384
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du könntest in einem BEGIN-Block überprüfst, ob schon ein Prozess mit diesem Namen existiert...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
BratHering
 2006-05-09 19:33
#45385 #45385
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
[quote=renee,09.05.2006, 17:12]Du könntest in einem BEGIN-Block überprüfst, ob schon ein Prozess mit diesem Namen existiert...[/quote]
Hmm... gute Idee, könntest Du mir vielleicht noch etwas erläutern wie man nach Prozessen und deren Namen schauen kann? :D
Matze
 2006-05-09 21:01
#45386 #45386
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Auf Win32 so:
Win32::Process und Win32::Process::Info

Such mal ein bisschen mit der Forum-Suche, da findest du ein paar
Beispiele wie die Module zu verwenden sind.

MfG. Matze
Mit freundlichen Grüßen: Matze
ptk
 2006-05-09 22:45
#45387 #45387
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du könntest auch ein Lockfile anlegen (siehe Fcntl). Solange der Lock aktiv ist, ist die andere Anwendung noch am Laufen.
betterworld
 2006-05-10 04:32
#45388 #45388
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich wuerde auf jeden Fall ein Lockfile vorziehen.

Wenn man das Programm zweimal kurz hintereinander startet, kann es sonst sein, dass beide Instanzen sich gegenseitig in der Prozessliste sehen und sich daher beenden. Nicht gut.
zipster
 2006-05-10 11:13
#45389 #45389
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Nur mal so ne Frage zwischen durch. Und was wäre wenn das Programm aus irgendwelchen Gründen einfach abstürzt? Könnte man es dann danach nicht mehr starten?
BratHering
 2006-05-10 13:17
#45390 #45390
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
[quote=zipster,10.05.2006, 09:13]Nur mal so ne Frage zwischen durch. Und was wäre wenn das Programm aus irgendwelchen Gründen einfach abstürzt? Könnte man es dann danach nicht mehr starten?[/quote]
Wird denn nach einem Programmabsturz der END{} Block ausgeführt (ich bin mir da nicht sicher)?
Wenn ja, könnte man dort nach dem Lockfile schauen?

Aber die Sache mit den Prozessen interessiert mich etwas mehr, werde mich da erstmal weiter schlau machen.

Danke erstmal! :)
BratHering
 2006-05-10 15:11
#45391 #45391
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
Hallo,

also im Wiki habe ich ebenfalls folgendes gefunden: http://faq.perl-community.de/bin/view/Wissensbasis/WinProcessMgmt

Nun weiss ich wie ich die Prozesse mit Namen und PID auslesen kann, aber eine Sache weiß ich immer noch nicht wie ich diese umsetzen soll:
Ich möchte ja beim Start eines Perl-Programms prüfen, ob bereits eine Instanz desselbigen läuft.
Wenn ich aber mein Perl-Programm mehrfach starte, dann habe ich viele perl.exe Prozesse mit unterschiedlichen PIDs am laufen.
Woher soll ich nun wissen welcher dieser perl.exe Prozesse genau das eine Perl-Programm ist und es nicht ein anderes Perl-Skript ist?

Ich weiß zwar, dass es einfacher ist, wenn man das Perl-Skript-Programm mittels PAR in eine *.exe umwandelt.

Trotzdem würde ich gerne wissen ob es für das Non-Exe-Perl-Skript-Programm eine Lösung zu meiner Frage gibt?

Danke.


MfG
Brathering :-)
betterworld
 2006-05-10 15:32
#45392 #45392
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=zipster,10.05.2006, 09:13]Nur mal so ne Frage zwischen durch. Und was wäre wenn das Programm aus irgendwelchen Gründen einfach abstürzt? Könnte man es dann danach nicht mehr starten?[/quote]
Wenn man flock fuer das Lockfile benutzt, ist es zwar nach einem Absturz immer noch da, aber nicht mehr gelockt. Kein Problem.
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2006-05-09 19:05.