Vererbung von Filedescriptoren bei exec()

11/01/2008 - 11:12 von Jochen Luebbers | Report spam
Hallo,

vielleicht hatte ich ja nur einen schrecklich flaschen Wissensstand,
aber ich war der Überzeugung das Filedescriptoren bei einem exec*()
normalerweise geschlossen würden.

Die Praxis und die Man-Page auf RHEL4 sagen jedoch etwas anderes:
| If the FD_CLOEXEC flag in the third argument is 0,
| the file shall remain open across the exec functions; other-
| wise, the file shall be closed upon successful execution of one
| of the exec functions.

War das mal anders? Und kann ich für einen Prozess einstellen, dass
grundsàtzlich alle seine Filedescriptoren (OK, von mir aus außer
0 .. 2) bei einem exec*() geschlossen werden, ohne das ich das für
jeden extra und einzeln tun müsste?

Gruß
Jochen.
"Who desire to give up freedom in order to gain security
will loose both in the end." (Benjamin Franklin)
 

Lesen sie die antworten

#1 Dirk Clemens
11/01/2008 - 11:30 | Warnen spam
Jochen Luebbers wrote:
Hallo,

vielleicht hatte ich ja nur einen schrecklich flaschen Wissensstand,
aber ich war der Überzeugung das Filedescriptoren bei einem exec*()
normalerweise geschlossen würden.



Soweit ich mich erinnere, musste man das "automatische Schließen"
schon immer explicit veranlassen.


War das mal anders? Und kann ich für einen Prozess einstellen, dass
grundsàtzlich alle seine Filedescriptoren (OK, von mir aus außer
0 .. 2) bei einem exec*() geschlossen werden, ohne das ich das für
jeden extra und einzeln tun müsste?



mit fcntl() kann man diese Einstrellung für einzelne fd vornehmen,
z.B.: fcntl(fno,F_SETFD,(long)FD_CLOEXEC);

Dirk


Mail an: lemmi (minus) usenet (at) ftb (minus) net (dot) de

Ähnliche fragen