Thread System-Ausgabe in Datei umleiten - inkl. ReturnCode-Steuerung
(23 answers)
Opened by Duhmok at 2012-02-20 15:54
Tja, Perl 5.6.x ist dermaßen uralt, dass Du wahrscheinlich nicht viel Freude haben wirst, dafür ein Modul zu installieren, denn eventuell musst Du auch eine passend veraltete Version des Moduls finden.
Die gewünschte Ausgabeumleitung geht natürlich auch mit Bordmitteln, dazu solltest Du Dir IPC::Open3 anschauen (ist seit Perl 5.x im Sprachkern) und Dich mit dem Verhalten von open, waitpid, select und close befassen. Eine Umleitung in eine Datei lässt sich wohl noch recht einfach bewerkstelligen. Ungetesteter Beispielcode: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 use IPC::Open3; # Open output in parent open OUTFILE, '>', '/where/to/put/output' or do { die "error opening output file: $!"; }; # Spawn child inheriting parent input and redirecting all output my $pid = open3( '<&STDIN', '>&OUTFILE', undef, $impKorr, -cfgfile => $cfgfile, -dbuser => $USER, -dbpassword => $PWD ) or do { die "error spawning external process: $!"; }; # Close output in parent close OUTFILE or do { warn "error closing output file: $!"; }; # Reap child and determine return code my $rc = (waitpid($pid, 0) == $pid ? $? : undef); Aber Du siehst sicher schon, dass solcher handgestrickter Code hässlich werden kann. When C++ is your hammer, every problem looks like your thumb.
|