Thread Ausgabe umlenken - Reihenfolgeproblem (2 answers)
Opened by Astralkeks at 2012-09-05 17:25

Astralkeks
 2012-09-05 17:25
#161644 #161644
User since
2012-07-17
40 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte STDOUT und STDERR in die gleiche Datei umleiten. Dabei gab es Probleme, und nicht jede Ausgabe wurde umgeleitet.
Dann habe ich ein kleines Testprogramm geschrieben und bekomme ungewöhnliche Ausgaben:

Code (perl): (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
use POSIX;

 open(STDOUTFAKE, ">&STDOUT");
 open(STDOUT, ">>$globalLog") || die "Kann $globalLog nicht öffnen!";
 
 open(STDERRFAKE, ">&STDERR");
 open(STDERR, ">>$globalLog") || die "Kann $globalLog nicht öffnen!";
 open(GLOG, ">>$globalLog") || die "Kann $globalLog nicht öffnen!";;


logPrint("1\n");
 print "2\n";
logPrint2("3\n");
 print GLOG ("4\n");

open(STDOUT, ">&STDOUTFAKE");
open(STDERR, ">&STDERRFAKE");

close STDOUTFAKE;
close STDERRFAKE;
close GLOG;

sub logPrint {
    print GLOG "-- ".strftime('%H:%M:%S',localtime(time()))." -- ".shift;
}
sub logPrint2 {
    print "-- ".strftime('%H:%M:%S',localtime(time()))." -- ".shift;
}


Also Idee ist einfach, STDOUT, STDERR auf $globalLog umleiten, und bei Bedarf eigene Einträge mit Uhrzeit hinzufügen.
Erwartete Ausgabe ist eine numerisch geordnete, die tatsächliche ist allerdings:

Code: (dl )
1
2
3
4
2
-- 17:19:46 -- 3
-- 17:19:46 -- 1
4


Ich bin verwirrt. Jemand eine Idee?
Oder vielleicht eine einfachere Variante?

View full thread Ausgabe umlenken - Reihenfolgeproblem