9 Einträge, 1 Seite |
system("print STDERR Hallo!"); #jetzt bräuchte ich die PID des print-Befehles
my $pid = open '-|', my $pipe, 'ls', '-r' or die $!;
my $pid = open '-|', my $pipe, 'ls', '-r' or die $!;
my $pid = qx(sh -c 'echo -n \$\$; exec gimp >/dev/null' &);
sid burn+2007-08-06 22:33:12--@RPerl
Grrrr....
Also ich erkläre das Beispiel mal etwas genauer:
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.
9 Einträge, 1 Seite |