Re: Equivalent of openat() on osx?
Re: Equivalent of openat() on osx?
- Subject: Re: Equivalent of openat() on osx?
- From: Tilghman Lesher <email@hidden>
- Date: Thu, 05 May 2011 02:33:12 -0500
- Reply-by: Wed, 19 Jan 2011 16:20:00 -0600
On Thursday 05 May 2011 00:58:48 Eric Gouriou wrote:
> On May 3, 2011, at 9:13 AM, Anatol Pomozov wrote:
> > Hi,
> >
> > I am porting a Linux program to macosx (target is 10.6 version) and
> > the program uses openat/unlinkat/... functions. Although these
> > functions are not in POSIX, they are widely used on *nixes and the
> > part proposal the next POSIX.
> >
> > My question what is the best equivalent for the opentat() functions
> > that can be used in multithreaded application. Currently I use
> > something like this:
> >
> >
> > int openat(int dirfd, const char *pathname, int flags, ...)
> > {
> >
> > int fd;
> >
> > if(fchdir(dirfd) < 0) {
> >
> > perror("fchdir");
> > return -1;
> >
> > }
> >
> > fd = open(pathname, flags, mode);
> > // chdir to the original CWD
> >
> > return fd;
> >
> > }
> >
> > But this is not a perfect solution - current working directory is
> > shared among all threads, it means that openat() may affect other
> > threads. Is there an equivalent of this implementation without
> > changing the current directory?
>
> Use a per-thread CWD? Darwin supports them but I can't figure
> where/whether it is documented. A previous reference to this
> capability, from an apple.com address:
> <http://lists.apple.com/archives/unix-porting/2008/Mar/msg00028.html>
The *at functions are generally considered to be the way that a per-thread
working directory is implemented. Perhaps the author misspoke or was
referring to an as-yet unreleased version of OS X (10.7 Lion, maybe?).
> However, in my opinion, the openat()/... functions are good deal more
> convenient than per-thread CWDs. I'm glad to hear that they are
> considered for inclusion in an upcoming revision of POSIX.
Based upon how it's published on the opengroup site, it appears it's
already a part of POSIX.1-2008 (Base Specifications, Issue 7).
--
Tilghman
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden