Home Man
Today's Posts

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Section of Man Page:
Select Man Page Repository:

Linux 2.6 - man page for openat (linux section 2)

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

       openat - open a file relative to a directory file descriptor

       #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)):

	   Since glibc 2.10:
	       _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
	   Before glibc 2.10:

       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.

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

       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.

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

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

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

       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.)

       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)

       This page is part of release 3.55 of the Linux man-pages project.  A  description  of  the
       project,     and    information	  about    reporting	bugs,	 can	be    found    at

Linux					    2012-05-04					OPENAT(2)

All times are GMT -4. The time now is 08:23 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
Show Password