Re: Operations on file descriptors in addition to pathnames Duy Nguyen 12 Dec 2019 13:27 UTC

On Thu, Dec 12, 2019 at 8:21 PM Lassi Kortela <> wrote:
> >> Then again, if the pathname exceeds PATH_MAX you wouldn't be able to operate on it
> >> anyway.
> >
> > Not really. As an example, you can open the first half of the path
> > (still shorter than PATH_MAX) with open(), then pass the second half
> > to openat().
> That's similar to what Gambit is doing. But the OS won't let your
> process allocate any more file descriptors, then you can't open() any of
> the parent directories. The per-process limit can be set with `ulimit
> -n` can be quite strict in some environments.

But we don't need to keep the directory fd open after you have done
fooat(). Keeping a fixed number of open fds would be an optimization
to avoid doubling the number of system calls.

I could see a bad person really pushing it to the limit. But then he
or she already has a way to open() nearly unlimited fds. The fixed
number of cached fds only makes it happen a little bit sooner.