STDOUT und STDERR synchronisieren

21/10/2009 - 17:16 von Tobias Nissen | Report spam
Moin!

Ich stehe gerade aufm Schlauch. Ich möchte gerne STDOUT und STDERR
synchronisieren, d.h. Ausgaben[0] sollen in der Reihenfolge auf
der Console (Debian Squeeze, Perl 5.10.0 built for i486-linux-gnu-
thread-multi) erscheinen, wie sie vom Programm herausgeschrieben
werden. Ich war immer der Meinung es würde dafür reichen, am Anfang
des Programms ein

$| = 1;

zu machen. Denn das Durcheinanderwürfeln der Meldungen liegt doch
daran, dass STDOUT gepuffert wird und STDERR nicht. Oder habe ich da
was missverstanden? (Anscheinend, sonst würd's ja funktionieren...)

Oder ist das gar nicht Perl's Schuld und meine Konsole[1] mischt da
STDOUT und STDERR?

Was ich nicht möchte, ist STDERR und STDOUT zusammenzulegen. Ich will
schon noch an der Kommandozeile mit

./script 1>stdout.out 2>stderr.out

filtern können.

Was kann man da machen?

Schöne Grüße!
Tobias

[0] also a la
print "foo"
bzw.
print STDERR "bar"

[1] urxvt mit bash
 

Lesen sie die antworten

#1 Tobias Nissen
21/10/2009 - 17:19 | Warnen spam
Tobias Nissen wrote:
Ich stehe gerade aufm Schlauch. Ich möchte gerne STDOUT und STDERR
synchronisieren, d.h. Ausgaben[0]


[...]
[0] also a la
print "foo"
bzw.
print STDERR "bar"



Wobei auch mal

die "bar"

zum Einsatz kommt. Aber das sollte doch was die Ausgabe angeht
àquivalent zu

print STDERR "bar"

sein, oder?

Ähnliche fragen