Presmerovani STDERR zevnitr skriptu
Jan Kasprzak
kas na fi.muni.cz
Pondělí Červenec 28 16:39:08 CEST 2008
Pavel Smerk wrote:
: Ahoj,
:
: mam nasledujici kod
:
: *STDERR = *STDOUT;
: warn fork ? "parent" : "child";
: system "ls neexistujici >/dev/null";
:
: a spoustim jej perl kod.pl > kod.out 2> kod.err
:
: Hlasky parent a child jdou do kod.out (tedy na standardni vystup), ale
: chybove hlaseni ls se vypise do kod.err. Pritom pokud spravne chapu
: napovedu, system udela fork a execvp, rodic a dite sdileji file descriptors
: a execvp je necha otevrene.
:
: Jaktoze tedy ls vypisuje chybovou hlasku do kod.err a jak lze zajistit, aby
: i jeho chybovy vystup byl presmerovan do kod.out?
Tady je totiz problem, ze STDIN, STDOUT a STDERR jsou
filedeskriptory 0, 1 a 2 jen pri startu Perlu. Pokud s tim neco udelas
takovymto prirazenim, tak se nezmeni ty filedeskriptory pod tim,
jen jejich "nazev" STDERR v Perlu.
Podle me chces
- *STDERR = *STDOUT;
+ open STDERR, '>&STDOUT';
(jeste teda nevim presne k cemu v tom prikladu je ten fork, ale co uz).
Odpovidam na to na co se ptas?
-Y.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Journal: http://www.fi.muni.cz/~kas/blog/ |
>> If you find yourself arguing with Alan Cox, you’re _probably_ wrong. <<
>> --James Morris in "How and Why You Should Become a Kernel Hacker" <<
Další informace o konferenci Perl