Schrift
[thread]7909[/thread]

Help! Prozessliste abfragen (Anfaenger): Prozesse abfragen und reagieren

Leser: 2


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
peterpan
 2006-04-20 17:13
#65146 #65146
User since
2006-04-20
4 Artikel
BenutzerIn
[default_avatar]
Hallo an alle,

bin ein Perl Neuling und scheitere gerade an folgendem Problem:
Ich möchte abfragen ob ein Prozess läuft, das hab ich soweit hinbekommen (wenn auch etwas primitiv, wie ich glaube).
Das Problem ist nun das folgende:
-Solange der Prozess noch läuft, soll das Script nichts tun bzw. erneut prüfen ob er noch läuft.
-Wenn der Prozess nicht mehr läuft soll er mit der Ausführung des restlichen Scripts weitermachen.

Mein Lösungsansatz bisher:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl

use Win32;
use Win32::Process::Info;

my $exe = "notepad.exe"; # Name der Processdatei
my $pi = Win32::Process::Info->new();
check_process();
print $returncode;
#while ($returncode eq "running")
# { check_process();
#   print $returncode;
# }
 
sub check_process {
foreach my $hashref ($pi->GetProcInfo())
{
  if (lc($hashref->{Name}) eq $exe)
  {
     #print "Process: $hashref->{Name}\n";
     $returncode = "running";
  }
 }
 if ($returncode eq "running")  { return $returncode;  }
 else {
$returncode="not running";
return $returncode;
       }
}

Eigentlich dachte ich, die while Schleife wird solange aufgerufen, bis der $returncode nicht mehr "running" ist..leider ist dem nicht so...(deshalb auch auskommentiert)

Hat irgend jemand einen Tipp? Any hint appreciated..
P.S. Sorry für den uneleganten code, bin newbie in perl.

Danke im voraus & Grüße

Peter Pan

//modedit Gwendragon: Code-Tags hinzugefügt; Bitte Code in Code-Tags\n\n

<!--EDIT|GwenDragon|1145539760-->
Crian
 2006-04-20 18:53
#65147 #65147
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Verwende use strict; use warnings; und verwende in Funktionen keine globalen Variablen. Ich glaube, dann erledigt sich dein Problem von allein. Wenn nicht, frag nochmal nach =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Matze
 2006-04-20 18:59
#65148 #65148
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
So schlecht finde ich es nicht.
Ich würde es allerdings so machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w
#
use strict;
use Win32::Process;
use Win32::Process::Info;

my $run = 1;

while ($run) {
  my $pi = Win32::Process::Info->new();
  my @info = $pi->GetProcInfo();

  my $run = 0;
  for my$av (0..$#info) {
    if ($info[$av]{Name} =~ /notepad.exe/) {
      $run = 1;
    }
  }
}

#...


Ich habs nicht getestet!
Aber es sollte so funktionieren.

MfG. Matze
Mit freundlichen Grüßen: Matze
Crian
 2006-04-20 19:06
#65149 #65149
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Das Problem lag beim oberflächlichen Betrachten an der globalen Rückgabewertvariablen ... deshalb meine Anregungen. :)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
peterpan
 2006-04-20 20:44
#65150 #65150
User since
2006-04-20
4 Artikel
BenutzerIn
[default_avatar]
[quote=Matze,20.04.2006, 16:59]So schlecht finde ich es nicht.
Ich würde es allerdings so machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w
#
use strict;
use Win32::Process;
use Win32::Process::Info;

my $run = 1;

while ($run) {
my $pi = Win32::Process::Info->new();
my @info = $pi->GetProcInfo();

my $run = 0;
for my$av (0..$#info) {
if ($info[$av]{Name} =~ /notepad.exe/) {
$run = 1;
}
}
}

#...


Ich habs nicht getestet!
Aber es sollte so funktionieren.

MfG. Matze[/quote]
Vielen Dank für die Tipps erstmal, leider hab ich mein Prob immer noch nicht geloest, in dem Tipp von Matze stimmt wohl irgendwas am Pattern-Match nicht, jedenfalls tut sein Listing nix.

Ich denke mal hier sitzt der Fehler, aber wo genau kann ich nicht sagen:
Code: (dl )
if ($info[$av]{Name} =~ /notepad.exe/)

Ist halt schon irgendwie doof wenn man wie ich neu ist und die Syntax nicht beherrscht...
Matze
 2006-04-20 21:11
#65151 #65151
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also, ich hab gerade gesehn, dass ich geschrieben hab:
Code: (dl )
my $run = 0;

Das muss natürlich ohne das my gemacht werden.
(Die Regular Expression ist vollkommen richtig.)

Ich habs mit Verbesserung bei mir ausprobiert, und es hat geklappt.

Hast du Crians Borschlag schon berücksichtigt ?

MfG. Matze
Mit freundlichen Grüßen: Matze
peterpan
 2006-04-20 21:32
#65152 #65152
User since
2006-04-20
4 Artikel
BenutzerIn
[default_avatar]
Du hast recht, dein Listing funzt. Dachte zuerst das tut ja nix..aber es kann ja auch erst was tun, wenn notepad zu ist...sitz wohl zu lange am rechner fuer heut (hirntot)....damit ist mein problem perfekt gelöst!
Tausend Dank!
/me spendiert Matze ein Pils seiner Wahl!\n\n

<!--EDIT|peterpan|1145555879-->
Dubu
 2006-04-21 01:22
#65153 #65153
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Busy-Waiting ist böse.

Da sollte zumindest irgendwo ein sleep() rein.
Matze
 2006-04-21 11:34
#65154 #65154
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Dubu,20.04.2006, 23:22]Busy-Waiting ist böse.

Da sollte zumindest irgendwo ein sleep() rein.[/quote]
Was ist Busy-Waiting ?
Warum sollte da ein sleep() rein ?

MfG. Matze
Mit freundlichen Grüßen: Matze
renee
 2006-04-21 11:39
#65155 #65155
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei Busy-Waiting ist die while-Schleife immer am Rennen, was CPU verbraucht - belastet den Computer ziemlich stark. Mit dem sleep schläft das Programm immer wieder und lastet die CPU nicht so stark aus!

Beim Busy-Waiting kann es passieren, dass die CPU dauerhaft mit 100% ausgelastet ist und kein anderes Programm zum Zuge kommt. Mit dem sleep ist sichergestellt, dass das nicht passiert!
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/
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2006-04-20 17:13.