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