Thread Prozessid eines mit system ausgeführten befehls (8 answers)
Opened by mordur at 2007-08-06 18:24

mordur
 2007-08-07 11:16
#97688 #97688
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
sid burn+2007-08-06 22:33:12--
@RPerl
Grrrr....

Also ich erkläre das Beispiel mal etwas genauer:
Code (perl): (dl )
1
2
system('ls -l');
print "Hallo, Welt!\n";


In den oberen Mini Stück code wird zuerst ein system() aufgerufen. Dieses ruft "ls -l" auf. Und jetzt kommt der knackpunkt. Wärenddessen läuft dein Perl Programm nicht weiter! Ein aufruf von system() führt dazu das dein komplettes Programm solange stehen bleibt bis das Kommando ausgeführt wurde und sich beendet, erst danach fährt dein Perl Programm fort.

Wenn du anstatt "ls -l" jetzt "gimp" aufrufst, und du 3 Stunden lang ein Bild in gimp malen würdest, dann würde dein Programm auch 3 Stunden lang warten bis gimp beendet ist.

Wenn es jetzt Möglich wäre und du würdest wirklich die PID heraus bekommen für system() welchen Nutzen hat dir diese PID dann noch? Kurz gesagt gar kein. Du magst dann die PID haben, aber der Prozess mit dieser PID existiert schon lange nicht mehr. Das einzige was du ausgeben könntest wäre: "Ich habe ein Process mit der PID $PID erzeugt. Allerdiengs existiert dieser Process nicht mehr, von daher ist diese Information sowieso unbrauchbar".

Und da so eine Ausgabe unbrauchbar ist, ist mir kein weg bekannt die PID von einem system() Befehl heraus zu bekommen. Zumal es sowieso keinen Sinn macht diese zu Wissen.


jepp, das hast du richtig erkannt. mittlerweile habe ich auch gemerkt, das ich die PID nicht wirklich brauchen kann, weil der Prozess ja bereits zu Ende ist, wenn mein Perlprogramm weiter läuft. So hab ich wohl eher ein strukturelles Problem... ;-)

View full thread Prozessid eines mit system ausgeführten befehls