WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 21.08.2003, 11:30   #1
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard [Perl] capture program output

Hi Leute,

ich will den CD-Brenn-Vorgang unter GNU/Linux ein wenig mittels Perl automatisieren, d.h so eine Art "Wizard" für die Shell bauen.

mkisofs gibt auf der Konsole den aktuellen Status aus, bestehend aus den % finished und der vorraussichtlichen Dauer. Jeweils eine Zeile.

Jetzt will ich aber nicht den ganzen Screen auffüllen sondern immer nur die letzte Zeile am Schirm darstellen - wie geht das mit Perl?

Danke!
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 21.08.2003, 13:03   #2
ruprecht69
Jr. Member
 
Registriert seit: 22.05.2003
Beiträge: 87


Standard

Stderr/Stdout redirecten

while (Zeilenweise einlesen)
{
Parsen
Eigenen Output ausgeben
}

fürn Terminal Steuerung auf CPAN suchen, evtl. Termcap etc.
ruprecht69 ist offline   Mit Zitat antworten
Alt 21.08.2003, 13:39   #3
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

Und wohin redirecten? Wie sieht das genaue Codefragment aus?
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 22.08.2003, 08:34   #4
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

den output von einem programm kannst du unter anderem so capturen:

Code:
my @output;
my $zeile;

@output = `ps -ef`;

foreach $zeile (@output)
{
  print $zeile;
}
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 22.08.2003, 09:30   #5
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

Ja, aber so bekomme ich den ganzen Output, das ist schon klar.

Ich will das parallel zum Perl-Script cdrecord läuft und die Ausgabe ständig einzeilig aktualisiert wird, d.h. sobald cdrecord eine Zeile auf STDOUT ausgibt, will ich die in meinem Perl-Script einlesen können.
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 22.08.2003, 09:35   #6
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

ja hab auch grad mitbekommen, dass du das anders meinst.
aber mit open müssts gehen, da kriegst du synchron zeilenweise den output des aufgerufenen programms:

Code:
open (OUTPUT, "tail -f test.txt|") || die "can't fork: $!";
while (<OUTPUT>)
{
  print;
}
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:40 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag