Thread Linux: Ausgabe von system() in Datei umleiten
(16 answers)
Opened by odium at 2010-09-23 10:27 2010-09-23T10:59:03 odium Dein Problem ist, dass Du >outfile.xml von der Shell interpretiert haben willst. Das funktioniert nur, wenn Du genau einen String an system übergibst, also Code (perl): (dl
)
system('script -m test.list -s '.$outlistfile.' --nolabels --viterbi >outfile.xml'); Dabei musst Du Dich aber darum kümmern, dass $outfilelist keine Shell-Sonderzeichen enthält. Daher finde ich folgendes besser (ungetestet, soll nur den Gedanken demonstrieren): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 my $pid; select undef, undef, undef, 0.1 until defined($pid=fork); # stellt sicher, dass fork() auch klappt unless($pid) { close STDOUT; open STDOUT, '>', 'outfile.xml' or die; exec 'script','-m','test.list','-s', $outlistfile,'--nolabels','--viterbi'; # hier sollten wir nicht landen, es sei denn exec() geht schief. exit -1; # zur Sicherheit kann man hier auch mehr Varianten des Beendens implementieren, z.B: # kill KILL=>$$; # POSIX::_exit -1; } waitpid $pid; $rc=$?; |