On Sun, Apr 14, 2002 at 10:45:40PM +0200, Sascha Schumann wrote:
> > If a user knows that a third-party library (Oracle, whatever) can
> > provide messages to stderr, and they knowingly close that file
> > descriptor without dup()ing it elsewhere, then that is a bug in
> > their software.
>
> Note that the author of the non-apr application does not
> necessarily must submit to that wisdom. While you are
> theoritecally correct, it matters little practically.
The P in APR stands for portable, not 'obscures bugs in your code.'
This seems to come up every now and then -- APR (poorly) trying to protect
or obscure bugs from programmers -- remember the insanity that occurred
when all that socket inheritance stuff went in?
> > Having APR open a bunch of file-descriptors so
> > that this fixes a potential problem (IMO bug in their software)
> > is just wasting file descriptors.
>
> Not really. (error handling excluded)
>
> do {
> fd = open("/dev/null", O_RDWR);
> } while (fd < 3);
> close(fd);
>
> No fd wasted.
I as a daemon, startup, close all my file descriptors, then do an
apr_file_open("/etc/hosts") or some such -- that gives me file
descriptor 3. That means that I now have 3 fewer file descriptors
to use in my super-duper-file-descriptor-usage application. Sounds
like wasted descriptors to me.
-- Jon