User since
2008-02-20
9
Artikel
BenutzerIn
Hallo!
Mittlerweile werde ich in perl immer besser, aber es ist noch ein weiter Weg ;)
Ich programmiere zur Zeit für Windows ein Perl-Script.
Dabei möchte ich überprüfen, ob eine Anwendung ausgeführt wird, sprich irgendeine exe gerade läuft und wenn dies der Fall ist, diesen Prozess killen.
Ich habe jetzt schon etwas herumgeschaut und bin über Win32::Process gestolpert, aber so recht hilft mir das nicht weiter.
Soweit ich das verstanden habe, kann ich dieses Modul nur verwenden, wenn ich zuvor mit create einen Prozess erzeugt habe!?
Ich würde aber gerne über einen laufenden Prozess die Kontrolle übernehmen.
Gibt es dafür ein extra Modul oder Funktion?
Danke euch!
Schöne Grüße,
AndiS
User since
2007-11-15
54
Artikel
BenutzerIn
Prozesse kannst du mit kill killen ;)
Dazu brauchst du allerdings die Prozess ID. Unter Linux kann man die relativ einfach per top etc. rausfinden; keine Ahnung wie das bei Windows geht..
kill:
http://perldoc.perl.org/functions/kill.html
User since
2008-02-20
9
Artikel
BenutzerIn
Das ist zumindest schonmal ein Anfang :)
Das kann doch eigentlich fast nicht sein, dass das schweizer Taschenmesser unter den Programmiersprachen so ein Prozessüberwachung nicht implementiert hat...
Ich such mal weiter, vielleicht finde ich noch irgendwo was.
User since
2008-02-20
9
Artikel
BenutzerIn
@ renee
Vielen Dank! Ich glaube da ist ein kleiner Fehler in Zeile 13. Am Schluss sollte @info stehen.
use strict;
use warnings;
use Data::Dumper;
use Win32::Process::Info;
my $wpi = Win32::Process::Info->new;
my @info = $wpi->GetProcInfo;
my @list = grep{ $_->{Name} =~ /cmd\.exe$/ }@info;
print $_->{ProcessId}, "\n" for @list;
kill $_->{ProcessId} for @list;
Ich habe mal etwas umgebaut, die PIDs werden gefunden, aber der kill Befehl zeigt keine Wirkung. Eigentlich sollte das klappen, aber notepad.exe oder cmd.exe bleiben offen
User since
2003-08-21
2614
Artikel
ModeratorIn
renee+2008-03-23 13:53:49--Mach:
kill( 9, $_->{ProcessId} ) for @list;
Warum denn gleich mit 9ern um sich schmeissen? 15 wuerde ja auch erstmal reichen. kill mit einem Argument tut halt nichts, das war oben das Problem.
(Alles unter der Annahme, dass kill unter Windows so geht wie unter Unix)