Date: Wed, 5 Aug 1998 09:16:03 -0400 (EDT) From: CyberPeasant <djv@bedford.net> To: agifford@infowest.com (Aaron D. Gifford) Cc: freebsd-questions@FreeBSD.ORG Subject: Re: How do I close inherited descriptors? Message-ID: <199808051316.JAA19803@lucy.bedford.net> In-Reply-To: <35C7D0B9.F3DF2306@infowest.com> from "Aaron D. Gifford" at "Aug 4, 98 09:25:45 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Aaron D. Gifford wrote:
> Hello,
>
> I have a C program I've been working on that will be called by a PHP/FI
> 2.0 script (www.php.net) which runs as an Apache web module. I have
> discovered that PHP/FI 2.0's PassThru() function (which calls my C
> program) does not appear close descriptors that Apache has open (1 per
> LISTEN per virtual host, all the log file descriptors per virtual host,
> etc.). What I want to do is close all of these unnecessary descriptors
> in my own C program before it then execve()'s yet a third program, a
> program that should NOT get access to these descriptors.
>
> Here's what I'm using right now to close everything execpt STDIN,
> STDOUT, and STDERR (filenum()s 0, 1, and 2):
>
> for(fds = getdtablesize(), f=3; f < fds; f++) {
> close(f);
> }
>
> It seems to work just fine, but this sure seems an inelegant solution.
> What is the "correct" way to discover what descriptors are open and
> available and then close them appropriately? Am I missing something
> vital here?
No, I think this is 'the true way'. Stevens uses it, for example.
Suppose there were a kernel call or library routine to do this...
how would it be different?
about the only increase in elegance would be to make it a function of
its own.
> Sorry if you see this message twice. I posted it yesterday and it seems
> it got eaten by a roving quantum black hole.
That was the same one that brushed by the US stock market, I guess.
[the party's over, time to pay the piper, blah blah...]
Dave
--
Bedford County, PA -- 47,000 polite, friendly Appalachians,
4,000 of whom have concealed-carry permits.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808051316.JAA19803>
