Unix/Linux Go Back    


CentOS 7.0 - man page for openat (centos section 2)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


OPENAT(2)			    Linux Programmer's Manual				OPENAT(2)

NAME
       openat - open a file relative to a directory file descriptor

SYNOPSIS
       #include <fcntl.h>

       int openat(int dirfd, const char *pathname, int flags);
       int openat(int dirfd, const char *pathname, int flags, mode_t mode);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       openat():
	   Since glibc 2.10:
	       _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
	   Before glibc 2.10:
	       _ATFILE_SOURCE

DESCRIPTION
       The  openat() system call operates in exactly the same way as open(2), except for the dif-
       ferences described in this manual page.

       If the pathname given in pathname is relative, then it  is  interpreted	relative  to  the
       directory  referred  to	by the file descriptor dirfd (rather than relative to the current
       working directory of the calling process, as is done by open(2) for a relative pathname).

       If pathname is relative and dirfd is the special value AT_FDCWD, then pathname  is  inter-
       preted relative to the current working directory of the calling process (like open(2)).

       If pathname is absolute, then dirfd is ignored.

RETURN VALUE
       On success, openat() returns a new file descriptor.  On error, -1 is returned and errno is
       set to indicate the error.

ERRORS
       The same errors that occur for open(2) can also occur for openat().  The  following  addi-
       tional errors can occur for openat():

       EBADF  dirfd is not a valid file descriptor.

       ENOTDIR
	      pathname	is relative and dirfd is a file descriptor referring to a file other than
	      a directory.

VERSIONS
       openat() was added to Linux in kernel 2.6.16; library support was added to glibc  in  ver-
       sion 2.4.

CONFORMING TO
       POSIX.1-2008.  A similar system call exists on Solaris.

NOTES
       openat() and other similar system calls suffixed "at" are supported for two reasons.

       First, openat() allows an application to avoid race conditions that could occur when using
       open(2) to open files in directories other than the current working directory.  These race
       conditions  result  from  the  fact  that  some component of the directory prefix given to
       open(2) could be changed in parallel with the call to open(2).  Such races can be  avoided
       by  opening  a  file  descriptor  for  the target directory, and then specifying that file
       descriptor as the dirfd argument of openat().

       Second, openat() allows the implementation of a per-thread  "current  working  directory",
       via  file  descriptor(s)  maintained  by the application.  (This functionality can also be
       obtained by tricks based on the use of /proc/self/fd/dirfd, but less efficiently.)

SEE ALSO
       faccessat(2), fchmodat(2), fchownat(2), fstatat(2), futimesat(2),  linkat(2),  mkdirat(2),
       mknodat(2),  open(2), readlinkat(2), renameat(2), symlinkat(2), unlinkat(2), utimensat(2),
       mkfifoat(3), path_resolution(7)

COLOPHON
       This page is part of release 3.53 of the Linux man-pages project.  A  description  of  the
       project,     and    information	  about    reporting	bugs,	 can	be    found    at
       http://www.kernel.org/doc/man-pages/.

Linux					    2012-05-04					OPENAT(2)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 05:41 AM.