mirror of https://github.com/mkerrisk/man-pages
Martin Pool (and mtk) -- added O_NOATIME
This commit is contained in:
parent
67b715573a
commit
1c1e15ed85
15
man2/fcntl.2
15
man2/fcntl.2
|
@ -43,8 +43,9 @@
|
||||||
.\" Replaced the term "lease contestant" by "lease breaker"
|
.\" Replaced the term "lease contestant" by "lease breaker"
|
||||||
.\" Modified, 27 May 2004, Michael Kerrisk <mtk-manpages@gmx.net>
|
.\" Modified, 27 May 2004, Michael Kerrisk <mtk-manpages@gmx.net>
|
||||||
.\" Added notes on capability requirements
|
.\" Added notes on capability requirements
|
||||||
|
.\" Modified 2004-12-08, added O_NOATIME after note from Martin Pool
|
||||||
.\"
|
.\"
|
||||||
.TH FCNTL 2 2004-05-27 "Linux 2.6.6" "Linux Programmer's Manual"
|
.TH FCNTL 2 2004-12-08 "Linux 2.6.9" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
fcntl \- manipulate file descriptor
|
fcntl \- manipulate file descriptor
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -123,8 +124,16 @@ specified by
|
||||||
Remaining bits (access mode, file creation flags) in
|
Remaining bits (access mode, file creation flags) in
|
||||||
.I arg
|
.I arg
|
||||||
are ignored.
|
are ignored.
|
||||||
On Linux this command can only change the O_APPEND, O_NONBLOCK, O_ASYNC,
|
On Linux this command can only change the
|
||||||
and O_DIRECT flags.
|
.BR O_APPEND ,
|
||||||
|
.BR O_ASYNC ,
|
||||||
|
.BR O_DIRECT ,
|
||||||
|
.BR O_NOATIME ,
|
||||||
|
and
|
||||||
|
.BR O_NONBLOCK
|
||||||
|
flags.
|
||||||
|
.\" FIXME But according to SUSv3, O_SYNC should also be modifiable via
|
||||||
|
.\" fcntl(2) -- MTK, Dec 04
|
||||||
.P
|
.P
|
||||||
.SS "Advisory locking"
|
.SS "Advisory locking"
|
||||||
.BR F_GETLK ", " F_SETLK " and " F_SETLKW
|
.BR F_GETLK ", " F_SETLK " and " F_SETLKW
|
||||||
|
|
225
man2/open.2
225
man2/open.2
|
@ -33,8 +33,10 @@
|
||||||
.\" Modified 1999-06-03 by Michael Haardt
|
.\" Modified 1999-06-03 by Michael Haardt
|
||||||
.\" Modified 2002-05-07 by Michael Kerrisk <mtk-manpages@gmx.net>
|
.\" Modified 2002-05-07 by Michael Kerrisk <mtk-manpages@gmx.net>
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk-manpages@gmx.net>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk-manpages@gmx.net>
|
||||||
|
.\" 2004-12-08, mtk, reordered flags list alphabetically
|
||||||
|
.\" 2004-12-08, Martin Pool <mbp@sourcefrog.net> (& mtk), added O_NOATIME
|
||||||
.\"
|
.\"
|
||||||
.TH OPEN 2 2004-06-23 "Linux 2.6.7" "Linux Programmer's Manual"
|
.TH OPEN 2 2004-12-08 "Linux 2.6.9" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
open, creat \- open and possibly create a file or device
|
open, creat \- open and possibly create a file or device
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -52,7 +54,7 @@ The
|
||||||
.B open()
|
.B open()
|
||||||
system call is used to convert a pathname into a file descriptor
|
system call is used to convert a pathname into a file descriptor
|
||||||
(a small, non-negative integer for use in subsequent I/O as with
|
(a small, non-negative integer for use in subsequent I/O as with
|
||||||
.BR read ", " write ", etc.)."
|
.BR read "(2), " write "(2), etc.)."
|
||||||
When the call is successful, the file descriptor returned will be
|
When the call is successful, the file descriptor returned will be
|
||||||
the lowest file descriptor not currently open for the process.
|
the lowest file descriptor not currently open for the process.
|
||||||
This call creates a new open file, not shared with any other process.
|
This call creates a new open file, not shared with any other process.
|
||||||
|
@ -73,6 +75,29 @@ respectively,
|
||||||
.RI bitwise- or 'd
|
.RI bitwise- or 'd
|
||||||
with zero or more of the following:
|
with zero or more of the following:
|
||||||
.TP
|
.TP
|
||||||
|
.B O_APPEND
|
||||||
|
The file is opened in append mode. Before each
|
||||||
|
.BR write (),
|
||||||
|
the file pointer is positioned at the end of the file,
|
||||||
|
as if with
|
||||||
|
.BR lseek ().
|
||||||
|
.B O_APPEND
|
||||||
|
may lead to corrupted files on NFS file systems if more than one process
|
||||||
|
appends data to a file at once. This is because NFS does not support
|
||||||
|
appending to a file, so the client kernel has to simulate it, which
|
||||||
|
can't be done without a race condition.
|
||||||
|
.TP
|
||||||
|
.B O_ASYNC
|
||||||
|
.\" FIXME -- as far as I can tell O_ASYNC doesn't work for open(2),
|
||||||
|
.\" only when set via fcntl(2) -- MTK, Dec 04
|
||||||
|
Generate a signal (SIGIO by default, but this can be changed via
|
||||||
|
.BR fcntl (2))
|
||||||
|
when input or output becomes possible on this file descriptor.
|
||||||
|
This feature is only available for terminals, pseudo-terminals, and
|
||||||
|
sockets. See
|
||||||
|
.BR fcntl (2)
|
||||||
|
for further details.
|
||||||
|
.TP
|
||||||
.B O_CREAT
|
.B O_CREAT
|
||||||
If the file does not exist it will be created.
|
If the file does not exist it will be created.
|
||||||
The owner (user ID) of the file is set to the effective user ID
|
The owner (user ID) of the file is set to the effective user ID
|
||||||
|
@ -86,82 +111,6 @@ and
|
||||||
of the ext2 filesystem, as described in
|
of the ext2 filesystem, as described in
|
||||||
.BR mount (8)).
|
.BR mount (8)).
|
||||||
.TP
|
.TP
|
||||||
.B O_EXCL
|
|
||||||
When used with
|
|
||||||
.BR O_CREAT ,
|
|
||||||
if the file already exists it is an error and the
|
|
||||||
.B open
|
|
||||||
will fail. In this context, a symbolic link exists, regardless
|
|
||||||
of where its points to.
|
|
||||||
.B O_EXCL
|
|
||||||
is broken on NFS file systems, programs which rely on it for performing
|
|
||||||
locking tasks will contain a race condition. The solution for performing
|
|
||||||
atomic file locking using a lockfile is to create a unique file on the same
|
|
||||||
fs (e.g., incorporating hostname and pid), use
|
|
||||||
.BR link (2)
|
|
||||||
to make a link to the lockfile. If \fBlink()\fP returns 0, the lock is
|
|
||||||
successful. Otherwise, use
|
|
||||||
.BR stat (2)
|
|
||||||
on the unique file to check if its link count has increased to 2,
|
|
||||||
in which case the lock is also successful.
|
|
||||||
.TP
|
|
||||||
.B O_NOCTTY
|
|
||||||
If
|
|
||||||
.I pathname
|
|
||||||
refers to a terminal device \(em see
|
|
||||||
.BR tty (4)
|
|
||||||
\(em it will not become the process's controlling terminal even if the
|
|
||||||
process does not have one.
|
|
||||||
.TP
|
|
||||||
.B O_TRUNC
|
|
||||||
If the file already exists and is a regular file and the open mode allows
|
|
||||||
writing (i.e., is O_RDWR or O_WRONLY) it will be truncated to length 0.
|
|
||||||
If the file is a FIFO or terminal device file, the O_TRUNC
|
|
||||||
flag is ignored. Otherwise the effect of O_TRUNC is unspecified.
|
|
||||||
.TP
|
|
||||||
.B O_APPEND
|
|
||||||
The file is opened in append mode. Before each
|
|
||||||
.BR write ,
|
|
||||||
the file pointer is positioned at the end of the file,
|
|
||||||
as if with
|
|
||||||
.BR lseek .
|
|
||||||
.B O_APPEND
|
|
||||||
may lead to corrupted files on NFS file systems if more than one process
|
|
||||||
appends data to a file at once. This is because NFS does not support
|
|
||||||
appending to a file, so the client kernel has to simulate it, which
|
|
||||||
can't be done without a race condition.
|
|
||||||
.TP
|
|
||||||
.BR O_NONBLOCK " or " O_NDELAY
|
|
||||||
When possible, the file is opened in non-blocking mode. Neither the
|
|
||||||
.B open
|
|
||||||
nor any subsequent operations on the file descriptor which is
|
|
||||||
returned will cause the calling process to wait.
|
|
||||||
For the handling of FIFOs (named pipes), see also
|
|
||||||
.BR fifo (4).
|
|
||||||
This mode need not have any effect on files other than FIFOs.
|
|
||||||
.TP
|
|
||||||
.B O_SYNC
|
|
||||||
The file is opened for synchronous I/O. Any
|
|
||||||
.BR write s
|
|
||||||
on the resulting file descriptor will block the calling process until
|
|
||||||
the data has been physically written to the underlying hardware.
|
|
||||||
.I See RESTRICTIONS below, though.
|
|
||||||
.TP
|
|
||||||
.B O_NOFOLLOW
|
|
||||||
If \fIpathname\fR is a symbolic link, then the open fails. This is a
|
|
||||||
FreeBSD extension, which was added to Linux in version 2.1.126.
|
|
||||||
Symbolic links in earlier components of the pathname will still be
|
|
||||||
followed. The headers from glibc 2.0.100 and later include a
|
|
||||||
definition of this flag; \fIkernels before 2.1.126 will ignore it if
|
|
||||||
used\fR.
|
|
||||||
.TP
|
|
||||||
.B O_DIRECTORY
|
|
||||||
If \fIpathname\fR is not a directory, cause the open to fail. This
|
|
||||||
flag is Linux-specific, and was added in kernel version 2.1.126, to
|
|
||||||
avoid denial-of-service problems if \fBopendir\fR(3) is called on a
|
|
||||||
FIFO or tape device, but should not be used outside of the
|
|
||||||
implementation of \fBopendir\fR.
|
|
||||||
.TP
|
|
||||||
.B O_DIRECT
|
.B O_DIRECT
|
||||||
Try to minimize cache effects of the I/O to and from this file.
|
Try to minimize cache effects of the I/O to and from this file.
|
||||||
In general this will degrade performance, but it is useful in
|
In general this will degrade performance, but it is useful in
|
||||||
|
@ -182,14 +131,31 @@ suffices.
|
||||||
A semantically similar interface for block devices is described in
|
A semantically similar interface for block devices is described in
|
||||||
.BR raw (8).
|
.BR raw (8).
|
||||||
.TP
|
.TP
|
||||||
.B O_ASYNC
|
.B O_DIRECTORY
|
||||||
Generate a signal (SIGIO by default, but this can be changed via
|
If \fIpathname\fR is not a directory, cause the open to fail. This
|
||||||
.BR fcntl (2))
|
flag is Linux-specific, and was added in kernel version 2.1.126, to
|
||||||
when input or output becomes possible on this file descriptor.
|
avoid denial-of-service problems if \fBopendir\fR(3) is called on a
|
||||||
This feature is only available for terminals, pseudo-terminals, and
|
FIFO or tape device, but should not be used outside of the
|
||||||
sockets. See
|
implementation of \fBopendir\fR.
|
||||||
.BR fcntl (2)
|
.TP
|
||||||
for further details.
|
.B O_EXCL
|
||||||
|
When used with
|
||||||
|
.BR O_CREAT ,
|
||||||
|
if the file already exists it is an error and the
|
||||||
|
.BR open ()
|
||||||
|
will fail. In this context, a symbolic link exists, regardless
|
||||||
|
of where its points to.
|
||||||
|
.B O_EXCL
|
||||||
|
is broken on NFS file systems, programs which rely on it for performing
|
||||||
|
locking tasks will contain a race condition. The solution for performing
|
||||||
|
atomic file locking using a lockfile is to create a unique file on
|
||||||
|
the same file system (e.g., incorporating hostname and pid), use
|
||||||
|
.BR link (2)
|
||||||
|
to make a link to the lockfile. If \fBlink()\fP returns 0, the lock is
|
||||||
|
successful. Otherwise, use
|
||||||
|
.BR stat (2)
|
||||||
|
on the unique file to check if its link count has increased to 2,
|
||||||
|
in which case the lock is also successful.
|
||||||
.TP
|
.TP
|
||||||
.B O_LARGEFILE
|
.B O_LARGEFILE
|
||||||
(LFS)
|
(LFS)
|
||||||
|
@ -198,9 +164,58 @@ Allow files whose sizes cannot be represented in an
|
||||||
(but can be represented in an
|
(but can be represented in an
|
||||||
.BR off64_t )
|
.BR off64_t )
|
||||||
to be opened.
|
to be opened.
|
||||||
|
.TP
|
||||||
|
.B O_NOATIME
|
||||||
|
(Since Linux 2.6.8)
|
||||||
|
Do not update the file last access time when the file is
|
||||||
|
.BR read (2).
|
||||||
|
This flag is intended for use by indexing or backup programs,
|
||||||
|
where its use can significantly reduce the amount of disk activity.
|
||||||
|
This flag may not be effective on all filesystems.
|
||||||
|
One example is NFS, where the server maintains the access time.
|
||||||
|
.\" FIXME? This flag also affects the treatment of st_atime by mmap()
|
||||||
|
.\" and readdir(2), MTK, Dec 04.
|
||||||
|
.TP
|
||||||
|
.B O_NOCTTY
|
||||||
|
If
|
||||||
|
.I pathname
|
||||||
|
refers to a terminal device \(em see
|
||||||
|
.BR tty (4)
|
||||||
|
\(em it will not become the process's controlling terminal even if the
|
||||||
|
process does not have one.
|
||||||
|
.TP
|
||||||
|
.B O_NOFOLLOW
|
||||||
|
If \fIpathname\fR is a symbolic link, then the open fails. This is a
|
||||||
|
FreeBSD extension, which was added to Linux in version 2.1.126.
|
||||||
|
Symbolic links in earlier components of the pathname will still be
|
||||||
|
followed. The headers from glibc 2.0.100 and later include a
|
||||||
|
definition of this flag; \fIkernels before 2.1.126 will ignore it if
|
||||||
|
used\fR.
|
||||||
|
.TP
|
||||||
|
.BR O_NONBLOCK " or " O_NDELAY
|
||||||
|
When possible, the file is opened in non-blocking mode. Neither the
|
||||||
|
.BR open ()
|
||||||
|
nor any subsequent operations on the file descriptor which is
|
||||||
|
returned will cause the calling process to wait.
|
||||||
|
For the handling of FIFOs (named pipes), see also
|
||||||
|
.BR fifo (4).
|
||||||
|
This mode need not have any effect on files other than FIFOs.
|
||||||
|
.TP
|
||||||
|
.B O_SYNC
|
||||||
|
The file is opened for synchronous I/O. Any
|
||||||
|
.BR write ()s
|
||||||
|
on the resulting file descriptor will block the calling process until
|
||||||
|
the data has been physically written to the underlying hardware.
|
||||||
|
.I See RESTRICTIONS below, though.
|
||||||
|
.TP
|
||||||
|
.B O_TRUNC
|
||||||
|
If the file already exists and is a regular file and the open mode allows
|
||||||
|
writing (i.e., is O_RDWR or O_WRONLY) it will be truncated to length 0.
|
||||||
|
If the file is a FIFO or terminal device file, the O_TRUNC
|
||||||
|
flag is ignored. Otherwise the effect of O_TRUNC is unspecified.
|
||||||
.PP
|
.PP
|
||||||
Some of these optional flags can be altered using
|
Some of these optional flags can be altered using
|
||||||
.B fcntl
|
.BR fcntl ()
|
||||||
after the file has been opened.
|
after the file has been opened.
|
||||||
|
|
||||||
The argument
|
The argument
|
||||||
|
@ -212,7 +227,7 @@ in the usual way: the permissions of the created file are
|
||||||
.BR "(mode & ~umask)" .
|
.BR "(mode & ~umask)" .
|
||||||
Note that this mode only applies to future accesses of the
|
Note that this mode only applies to future accesses of the
|
||||||
newly created file; the
|
newly created file; the
|
||||||
.B open
|
.BR open ()
|
||||||
call that creates a read-only file may well return a read/write
|
call that creates a read-only file may well return a read/write
|
||||||
file descriptor.
|
file descriptor.
|
||||||
.PP
|
.PP
|
||||||
|
@ -262,30 +277,33 @@ is in the
|
||||||
.IR flags ,
|
.IR flags ,
|
||||||
and is ignored otherwise.
|
and is ignored otherwise.
|
||||||
|
|
||||||
.B creat
|
.BR creat ()
|
||||||
is equivalent to
|
is equivalent to
|
||||||
.B open
|
.BR open ()
|
||||||
with
|
with
|
||||||
.I flags
|
.I flags
|
||||||
equal to
|
equal to
|
||||||
.BR O_CREAT|O_WRONLY|O_TRUNC .
|
.BR O_CREAT|O_WRONLY|O_TRUNC .
|
||||||
.SH "RETURN VALUE"
|
.SH "RETURN VALUE"
|
||||||
.BR open " and " creat
|
.BR open "() and " creat ()
|
||||||
return the new file descriptor, or \-1 if an error occurred (in which case,
|
return the new file descriptor, or \-1 if an error occurred
|
||||||
|
(in which case,
|
||||||
.I errno
|
.I errno
|
||||||
is set appropriately).
|
is set appropriately).
|
||||||
Note that
|
Note that
|
||||||
.B open
|
.BR open ()
|
||||||
can open device special files, but
|
can open device special files, but
|
||||||
.B creat
|
.BR creat ()
|
||||||
cannot create them - use
|
cannot create them - use
|
||||||
.BR mknod (2)
|
.BR mknod (2)
|
||||||
instead.
|
instead.
|
||||||
.LP
|
.LP
|
||||||
On NFS file systems with UID mapping enabled, \fBopen\fP may return a file
|
On NFS file systems with UID mapping enabled, \fBopen\fP may
|
||||||
descriptor but e.g. \fBread\fP(2) requests are denied with \fBEACCES\fP.
|
return a file descriptor but e.g. \fBread\fP(2) requests are denied
|
||||||
This is because the client performs \fBopen\fP by checking the permissions,
|
with \fBEACCES\fP.
|
||||||
but UID mapping is performed by the server upon read and write requests.
|
This is because the client performs \fBopen\fP by checking the
|
||||||
|
permissions, but UID mapping is performed by the server upon
|
||||||
|
read and write requests.
|
||||||
|
|
||||||
If the file is newly created, its atime, ctime, mtime fields are set
|
If the file is newly created, its atime, ctime, mtime fields are set
|
||||||
to the current time, and so are the ctime and mtime fields of the
|
to the current time, and so are the ctime and mtime fields of the
|
||||||
|
@ -374,6 +392,14 @@ Or, the file is a device special file and no corresponding device exists.
|
||||||
.I pathname
|
.I pathname
|
||||||
refers to a regular file, too large to be opened - see O_LARGEFILE above.
|
refers to a regular file, too large to be opened - see O_LARGEFILE above.
|
||||||
.TP
|
.TP
|
||||||
|
.B EPERM
|
||||||
|
The
|
||||||
|
.B O_NOATIME
|
||||||
|
flag was specified, but the effective user ID of the caller
|
||||||
|
.\" Strictly speaking, it's the file system UID... (MTK)
|
||||||
|
did not match the owner of the file and the caller was not privileged
|
||||||
|
.RB ( CAP_FOWNER ).
|
||||||
|
.TP
|
||||||
.B EROFS
|
.B EROFS
|
||||||
.I pathname
|
.I pathname
|
||||||
refers to a file on a read-only filesystem and write access was
|
refers to a file on a read-only filesystem and write access was
|
||||||
|
@ -392,7 +418,8 @@ for use with
|
||||||
.SH "CONFORMING TO"
|
.SH "CONFORMING TO"
|
||||||
SVr4, SVID, POSIX, X/OPEN, BSD 4.3.
|
SVr4, SVID, POSIX, X/OPEN, BSD 4.3.
|
||||||
The
|
The
|
||||||
.B O_NOFOLLOW
|
.BR O_NOATIME ,
|
||||||
|
.BR O_NOFOLLOW ,
|
||||||
and
|
and
|
||||||
.B O_DIRECTORY
|
.B O_DIRECTORY
|
||||||
flags are Linux-specific.
|
flags are Linux-specific.
|
||||||
|
|
|
@ -21,9 +21,9 @@
|
||||||
.\" 6 Aug 2002 - Initial Creation
|
.\" 6 Aug 2002 - Initial Creation
|
||||||
.\" Modified 2003-05-23, Michael Kerrisk, <mtk-manpages@gmx.net>
|
.\" Modified 2003-05-23, Michael Kerrisk, <mtk-manpages@gmx.net>
|
||||||
.\" Modified 2004-05-27, Michael Kerrisk, <mtk-manpages@gmx.net>
|
.\" Modified 2004-05-27, Michael Kerrisk, <mtk-manpages@gmx.net>
|
||||||
|
.\" 2004-12-08, mtk Added O_NOATIME for CAP_FOWNER
|
||||||
.\"
|
.\"
|
||||||
.\"
|
.TH CAPABILITIES 7 2004-12-08 "Linux 2.6.9" "Linux Programmer's Manual"
|
||||||
.TH CAPABILITIES 7 2004-05-27 "Linux 2.6.6" "Linux Programmer's Manual"
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
capabilities \- overview of Linux capabilities
|
capabilities \- overview of Linux capabilities
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
@ -75,7 +75,13 @@ set extended file attributes (see
|
||||||
.BR chattr (1))
|
.BR chattr (1))
|
||||||
on arbitrary files;
|
on arbitrary files;
|
||||||
set Access Control Lists (ACLs) on arbitrary files;
|
set Access Control Lists (ACLs) on arbitrary files;
|
||||||
ignore directory sticky bit on file deletion.
|
ignore directory sticky bit on file deletion;
|
||||||
|
specify
|
||||||
|
.B O_NOATIME
|
||||||
|
for arbitrary files in
|
||||||
|
.BR open (2)
|
||||||
|
and
|
||||||
|
.BR fcntl (2).
|
||||||
.TP
|
.TP
|
||||||
.B CAP_FSETID
|
.B CAP_FSETID
|
||||||
Don't clear set-user-ID and set-group-ID bits when a file is modified;
|
Don't clear set-user-ID and set-group-ID bits when a file is modified;
|
||||||
|
|
Loading…
Reference in New Issue