Presmerovani STDERR zevnitr skriptu

Pavel Smerk xsmerk na fi.muni.cz
Pondělí Červenec 28 16:50:05 CEST 2008


On Mon, Jul 28, 2008 at 04:39:08PM +0200, Jan Kasprzak wrote:
> 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.

Aha.
 
> 	Podle me chces
> 
> - *STDERR = *STDOUT;
> + open STDERR, '>&STDOUT';
> 
> (jeste teda nevim presne k cemu v tom prikladu je ten fork, ale co uz).

Ten mel jenom dokladat, ze po forku to, co jak rodic, tak dite pisou na
STDERR, jde tam, kam je presmerovany STDOUT. Tak mi bylo divne, ze kdyz
system taky dela fork, ze se to pak chova jinak.

> 	Odpovidam na to na co se ptas?

Jo, dela to, co chci. :-)
								Diky,	P.

> 
> -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"  <<
> _______________________________________________
> Perl mailing list
> Perl na mailman.muni.cz
> https://mailman.muni.cz/mailman/listinfo/perl


Další informace o konferenci Perl