Thread System-Ausgabe in Datei umleiten - inkl. ReturnCode-Steuerung (23 answers)
Opened by Duhmok at 2012-02-20 15:54

murphy
 2012-02-28 17:56
#156508 #156508
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
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 CPAN: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.

View full thread System-Ausgabe in Datei umleiten - inkl. ReturnCode-Steuerung