46
Vývoj / Uzavření descriptorů po forku
« kdy: 24. 04. 2011, 23:27:41 »
Zdar. Řeším tu jeden problém se spouštění apikací vfork + execve. Mám docela problém s automatickým sdílením deskriptorů po této velké dvojici.
Píšu si objekt pro manipulaci se spuštěným procesy, což mimojiné umí třeba různé způsoby vytváření rour předtím, než jsou procesy spuštěny. Rád bych po spuštění procesů, aby jediné, co se nasdílí mezi procesy byly deskriptory 0,1,2 a všechno ostatní se zavřelo. Přitom nemohu spolehat na O_CLOEXEC, jednak nemám jistotu, že to programátoři budou všude používat a jednak některé tyhle techniky jsou zavedeny až od jádra 2.6.23 a mývám problémy s distribucemi, kde jsou jádra starší.
Tak mě napadlo, že bych všechny deskriptory zavřel po forku ručně, pomocí smyčky přes všechny a zavolání close(). Ale jak zjistit jejich seznam? Stačilo by, kdybych věděl číslo největšího deskriptoru. Napadá někoho jiné řešení?
PS použil jsem google, a neuspěl jsem
Píšu si objekt pro manipulaci se spuštěným procesy, což mimojiné umí třeba různé způsoby vytváření rour předtím, než jsou procesy spuštěny. Rád bych po spuštění procesů, aby jediné, co se nasdílí mezi procesy byly deskriptory 0,1,2 a všechno ostatní se zavřelo. Přitom nemohu spolehat na O_CLOEXEC, jednak nemám jistotu, že to programátoři budou všude používat a jednak některé tyhle techniky jsou zavedeny až od jádra 2.6.23 a mývám problémy s distribucemi, kde jsou jádra starší.
Tak mě napadlo, že bych všechny deskriptory zavřel po forku ručně, pomocí smyčky přes všechny a zavolání close(). Ale jak zjistit jejich seznam? Stačilo by, kdybych věděl číslo největšího deskriptoru. Napadá někoho jiné řešení?
PS použil jsem google, a neuspěl jsem