Re: _cleanup() vs Linux fcloseall()
- From: Kostik Belousov <kostikbel@xxxxxxxxx>
- Date: Thu, 30 Mar 2006 11:39:07 +0300
On Thu, Mar 30, 2006 at 07:16:19PM +1100, Peter Jeremy wrote:
On Thu, 2006-Mar-30 00:41:00 +0200, Maxime Henrion wrote:
John Baldwin wrote:
I would vote for fcloseall() personally.
Seconded.
I'd prefer to see a function that closed all file descriptors greater
than a specified limit (which makes it easy for a process to preserve
stdin/out/err but close everything else). Two obvious places for this
would be:
- At the beginning of a setuid program (making sure that the user hasn't
passed in any unexpected open FDs).
- Before an exec() to prevent fd's leaking into a child.
Does fcloseall() really closes all the open file descriptors? The name
suggests that it will close all the FILE * streams instead, which is not
quite the same. The manpage I found on the net seems to confirm this
indirectly by saying that fflush() is used prior to closing the streams.
Something that just closed all stdio FILE streams would be far less
useful (close to totally useless IMHO) than something that closed file
descriptors.
FWIW, NetBSD has something that close all the file descriptors, and it's
done with fcntl(fd, F_CLOSEM) (using fcntl() on one file descriptor to
close all of them looks a bit weird to me, but well...).
If it close any fd's numerically greater than the passed fd, that would
make a lot of sense.
According to fcntl(2) manpage from the netbsd, this is exactly the
functionality of F_CLOSEM. FreeBSD already has a way to close all
file descriptors: rfork(RFCFDG).
Attachment:
pgpUvk9wgTx3Y.pgp
Description: PGP signature
- References:
- _cleanup() vs Linux fcloseall()
- From: Daniel Eischen
- Re: _cleanup() vs Linux fcloseall()
- From: John Baldwin
- Re: _cleanup() vs Linux fcloseall()
- From: Maxime Henrion
- Re: _cleanup() vs Linux fcloseall()
- From: Peter Jeremy
- _cleanup() vs Linux fcloseall()
- Prev by Date: Re: _cleanup() vs Linux fcloseall()
- Next by Date: Re: REMINDER: Re: HEADS UP: network stack and socket hackery over the next few weeks
- Previous by thread: Re: _cleanup() vs Linux fcloseall()
- Next by thread: Re: _cleanup() vs Linux fcloseall()
- Index(es):
Relevant Pages
|
|