Thread Problem mit Filehandle im END Block
(8 answers)
Opened by PROXEN at 2014-08-04 20:23
Das Problem scheint Deine Pipe nach tee zu sein; ersetze ich diese durch eine Umleitung in eine Datei, steht da auch nachher das Erwartete drin (gut, dafür erscheint nichts mehr auf der Konsole; aber es geht ums Prinzip, wo die Ausgaben bleiben).
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 29 30 #! /usr/bin/env perl use strict; use warnings; $SIG{INT} = \&interrupt; #open LOGFILE, "|-", "tee some_file.out"; open LOGFILE, ">", "/tmp/log.txt"; LOGFILE->autoflush(1); select LOGFILE; print "fileconsole!\n"; print "pause\n"; my $in = <STDIN>; select STDOUT; print "console1\n"; die; sub interrupt { print "Caught a control c!\n"; die; } END { if(fileno(LOGFILE)){ print "close logfile\n"; close(LOGFILE) or warn; } } Test & Ergebnis: Code: (dl
)
1 ### ORIGINAL Beachte auch die unterschiedlichen Exit-codes (mit Pipe 141, mit Ausgabeumleitung in Datei 0). Den genauen Grund kann ich derzeit nicht benennen. EDIT: Möglicherweise findet sich etwas in http://perldoc.perl.org/perlipc.html EDIT2: Nach Hinweisen aus dem großen Datenorakel (das mit den 2 G's und O's) deutet der Exitcode 141 auf das Signal SIGPIPE hin. Du solltest also in dieser Richtung forschen. Last edited: 2014-08-04 22:20:50 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |