Programy nie odczepiające się od terminala (gpm, innwatch, vixie crond)

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Pią, 7 Wrz 2001, 21:05:07 CEST


On Wed, Sep 05, 2001 at 11:40:17AM +0200, Michal Moskal wrote:
> On Tue, Sep 04, 2001 at 10:54:43AM +0200, Jakub Bogusz wrote:
> > On Sun, Sep 02, 2001 at 03:47:12PM +0200, Michal Kochanowicz wrote:
> > > On Sun, Sep 02, 2001 at 12:51:43PM +0200, Jakub Bogusz wrote:
> > > > Jest jeszcze problem deskryptora 12 - pozostaje, jeżeli restart demona
> > > > był robiony przez rpm (chociaż może to należy poprawić rpm, żeby po
> > > > fork() przed exec() zamykał niektóre deskryptory?).
> > > IMO należy poprawić rpma, choćby z tego powodu że wystarczy zrobić to w
> > > jedym miejscu a nie w każdym daemonie.
> > 
> > Zaglądałem do rpm-a na okoliczność tego.
> > Wywoływanie skryptów jest w lib/uninstall.c, funkcja runScript().
> > Między fork() a execv() część deskryptorów jest zamykana, jak widać nie
> > wszystkie. Niestety w tej funkcji nie bardzo wiadomo co może być jeszcze
> > otwarte (a nie mam ochoty śledzić kodu między wszystkimi open() i
> > close() w całym rpm-ie) - więc pozostaje chyba tylko metoda brutalna
> > for(fd=3;fd<N;fd++) close(fd); (albo coś w tym stylu).
> 
> inetd jakis też tak robi. btw: może lepiej by było tym plikom ustawiać
> CLOSE_ON_EXEC,

O, nawet nie wiedziałem że takie coś jest. Chyba się przyda.
Poszukam gdzie rpm pliki otwiera... tylko nie wiem, gdzie i po co
otwiera/duplikuje deskryptor do terminala?

> albo raczej nie zdejmowac?

?
W info libc napisane, że po open() lub dup() FD_CLOEXEC jest
wyzerowane...


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl