.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
.\" O_TTYINIT. Eventually these may need to be documented. --mtk
.\"
-.TH OPEN 2 2014-04-20 "Linux" "Linux Programmer's Manual"
+.TH OPEN 2 2014-05-10 "Linux" "Linux Programmer's Manual"
.SH NAME
open, openat, creat \- open and possibly create a file
.SH SYNOPSIS
(i.e., the
.B FD_CLOEXEC
file descriptor flag described in
-.BR fcntl (2)
+.BR fcntl (2))
is initially disabled; the
.B O_CLOEXEC
-flag, described below, can be used to change this default).
+flag, described below, can be used to change this default.
The file offset is set to the beginning of the file (see
.BR lseek (2)).
.PP
creates a new
.IR "open file description" ,
an entry in the system-wide table of open files.
-This entry records the file offset and the file status flags
-(modifiable via the
-.BR fcntl (2)
-.B F_SETFL
-operation).
-A file descriptor is a reference to one of these entries;
+(This object is variously also called an "open file object",
+a "file handle", an "open file table entry",
+or\(emin kernel-developer parlance\(ema
+.IR "struct file" .
+The term "open file description" is used by POSIX.)
+The open file description records the file offset and the file status flags
+(see below).
+A file descriptor is a reference to an open file description;
this reference is unaffected if
.I pathname
is subsequently removed or modified to refer to a different file.
See also BUGS, below.
.TP
.BR O_CLOEXEC " (since Linux 2.6.23)"
-.\" NOTE! several otehr man pages refer to this text
+.\" NOTE! several other man pages refer to this text
Enable the close-on-exec flag for the new file descriptor.
Specifying this flag permits a program to avoid additional
.BR fcntl (2)
plus
.BR execve (2).
Depending on the order of execution,
-the race may lead to the file desriptor returned by
+the race may lead to the file descriptor returned by
.BR open ()
being unintentionally leaked to the program executed by the child process
created by
.BR F_GETFL
operation: the returned flags will include the bit
.BR O_PATH .
-
.IP *
Passing the file descriptor as the
.IR dirfd
argument of
.BR openat (2)
and the other "*at()" system calls.
+This includes
+.BR linkat (2)
+with
+.BR AT_EMPTY_PATH
+(or via procfs using
+.BR AT_SYMLINK_FOLLOW )
+even if the file is not a directory.
.IP *
Passing the file descriptor to another process via a UNIX domain socket
(see
requires support by the underlying filesystem;
only a subset of Linux filesystems provide that support.
In the initial implementation, support was provided in
-the ex2, ext3, ext4, UDF, Minix, and shmem filesystems.
+the ext2, ext3, ext4, UDF, Minix, and shmem filesystems.
XFS support was added
.\" commit 99b6436bc29e4f10e4388c27a3e4810191cc4788
.\" commit ab29743117f9f4c22ac44c13c1647fb24fb2bafe
If the file is a FIFO or terminal device file, the
.B O_TRUNC
flag is ignored.
-Otherwise the effect of
+Otherwise, the effect of
.B O_TRUNC
is unspecified.
.SS creat()
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
-relative to by the file descriptor
+referred to by the file descriptor
.I dirfd
(rather than relative to the current working directory of
the calling process, as is done by
.TP
.B ENXIO
.BR O_NONBLOCK " | " O_WRONLY
-is set, the named file is a FIFO and
-no process has the file open for reading.
+is set, the named file is a FIFO, and
+no process has the FIFO open for reading.
Or, the file is a device special file and no corresponding device exists.
.TP
.BR EOPNOTSUPP
.TP
.B ENOTDIR
.I pathname
-is relative and
+is a relative pathname and
.I dirfd
is a file descriptor referring to a file other than a directory.
.SH VERSIONS
Under Linux 2.4, transfer sizes, and the alignment of the user buffer
and the file offset must all be multiples of the logical block size
of the filesystem.
-Under Linux 2.6, alignment to 512-byte boundaries suffices.
+Since Linux 2.6.0, alignment to the logical block size of the
+underlying storage (typically 512 bytes) suffices.
+The logical block size can be determined using the
+.BR ioctl (2)
+.B BLKSSZGET
+operation or from the shell using the command:
+
+ blockdev \-\-getss
.LP
.B O_DIRECT
I/Os should never be run concurrently with the
.BR mknod (2),
.BR mmap (2),
.BR mount (2),
-.BR open_by_name_at (2),
+.BR open_by_handle_at (2),
.BR read (2),
.BR socket (2),
.BR stat (2),
.BR path_resolution (7),
.BR symlink (7)
.SH COLOPHON
-This page is part of release 3.65 of the Linux
+This page is part of release 3.67 of the Linux
.I man-pages
project.
A description of the project,
-and information about reporting bugs,
+information about reporting bugs,
+and the latest version of this page,
can be found at
\%http://www.kernel.org/doc/man\-pages/.