Jde svym detem NEpredat otevrene filehandly?
Pavel Smerk
xsmerk na fi.muni.cz
Čtvrtek Březen 26 10:07:26 CET 2009
On Thu, Mar 26, 2009 at 09:48:18AM +0100, Jan Kasprzak wrote:
> Pavel Smerk wrote:
> : Asi neco nechapu --- jaktoze musim STDOUT zavrit v obou vetvich driv nez
> : spustim ten Task Manager? Jak by slo udelat, aby se tomu spoustenemu procesu
> : nepredaval ten otevreny filehandle na STDOUT, ale v druhe vetvi programu (v
> : rodici) by sel dal pouzivat?
>
> Pisu mozna uplne mimo protoze Windows nerozumim, ale jeste existuje
> flag FD_CLOEXEC, kterym lze rict, ze tento filehandle se nema predavat
Jo, takovehle vymozenosti na Windows nemame, ale vygooglil jsem nejake
naznaky, jak to obejit, takze rozhodne diky za nasmerovani, co chtit. :-)
> novemu programu spoustenemu pres exec() (coz je zrejme neco co system()
> vola uvnitr). Hmm, vlastne - nechces ty exec misto system 1, ... ?
No ja ve skutecnosti volam `program` a vubec je to komplikovanejsi, chtel
jsem nejaky co nejjednodussi priklad, kde se to bude projevovat, pocitam, ze
to jinak bude vse na jedno brdo (exec mi totiz naopak nejak neskoncil, jak
bych cekal, no divny, ty windows :-).
A teda ciste ze zvedavosti, tohle se chova podobne i na unixu? Jakoze i kdyz
v diteti pred tim exec-em explicitne reknu close STDOUT, tak se exec-ovanemu
programu stejne ten filehandle preda, pokud ho rodic ma v tu chvili jeste
otevreny? Nebo je to nejaky bug te windowsi implementace/emulace techto
veci?
Diky, P.
>
> Neco jako
>
> my $flags = fcntl(STDOUT, F_GETFD, 0);
> $flags &= ~FD_CLOEXEC;
> fcntl(STDOUT, F_SETFD, $flags);
>
> a pak
>
> exec $prikaz, $arg1, $arg2, ...;
>
> -Yenya
>
> --
> | 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