Roland McGrath <[EMAIL PROTECTED]> wrote:
>> So I guess the exec*at business would ultimately be more complicated,
>> with two file descriptor parameters: one identifying the working
>> directory, and another by which to interpret the first parameter
>> if it's a relative file name.
>
> It seems adequate to just use chdir/fchdir for changing cwd, and then
> execveat given the file name (you can get an fd for the original cwd before
> chdir, for relative paths in exec).

Using chdir/fchdir is _usually_ adequate.
But what about the other times?  Sometimes you *cannot*
get an fd (or an absolute name) for an initial cwd.

Changing cwd is problematic whenever:

  - your code must be thread-safe

  - it would be impossible to restore the initial working
    directory, once it's been changed -- thereafter, no reference
    to a `.'-relative name can be resolved.

With the openat-style functions (as implemented with Linux/proc or
in Solaris kernels), there is no need to change the initial working
directory at all.

> But note that we already have fexecve.

Thanks.  I didn't know about that.


_______________________________________________
bug-gnulib mailing list
bug-gnulib@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnulib

Reply via email to