Node:Open-time Flags, Next:Operating Modes, Previous:Access Modes, Up:File Status Flags
The open-time flags specify options affecting how open
will behave.
These options are not preserved once the file is open. The exception to
this is O_NONBLOCK
, which is also an I/O operating mode and so it
is saved. See Opening and Closing Files, for how to call
open
.
There are two sorts of options specified by open-time flags.
open
looks up the
file name to locate the file, and whether the file can be created.
open
will
perform on the file once it is open.
Here are the file name translation flags.
int O_CREAT | Macro |
If set, the file will be created if it doesn't already exist. |
int O_EXCL | Macro |
If both O_CREAT and O_EXCL are set, then open fails
if the specified file already exists. This is guaranteed to never
clobber an existing file.
|
int O_NONBLOCK | Macro |
This prevents open from blocking for a "long time" to open the
file. This is only meaningful for some kinds of files, usually devices
such as serial ports; when it is not meaningful, it is harmless and
ignored. Often opening a port to a modem blocks until the modem reports
carrier detection; if O_NONBLOCK is specified, open will
return immediately without a carrier.
Note that the |
int O_NOCTTY | Macro |
If the named file is a terminal device, don't make it the controlling
terminal for the process. See Job Control, for information about
what it means to be the controlling terminal.
In the GNU system and 4.4 BSD, opening a file never makes it the
controlling terminal and |
The following three file name translation flags exist only in the GNU system.
int O_IGNORE_CTTY | Macro |
Do not recognize the named file as the controlling terminal, even if it refers to the process's existing controlling terminal device. Operations on the new file descriptor will never induce job control signals. See Job Control. |
int O_NOLINK | Macro |
If the named file is a symbolic link, open the link itself instead of
the file it refers to. (fstat on the new file descriptor will
return the information returned by lstat on the link's name.)
|
int O_NOTRANS | Macro |
If the named file is specially translated, do not invoke the translator. Open the bare file the translator itself sees. |
The open-time action flags tell open
to do additional operations
which are not really related to opening the file. The reason to do them
as part of open
instead of in separate calls is that open
can do them atomically.
int O_TRUNC | Macro |
Truncate the file to zero length. This option is only useful for
regular files, not special files such as directories or FIFOs. POSIX.1
requires that you open the file for writing to use O_TRUNC . In
BSD and GNU you must have permission to write the file to truncate it,
but you need not open for write access.
This is the only open-time action flag specified by POSIX.1. There is
no good reason for truncation to be done by |
The remaining operating modes are BSD extensions. They exist only on some systems. On other systems, these macros are not defined.
int O_SHLOCK | Macro |
Acquire a shared lock on the file, as with flock .
See File Locks.
If |
int O_EXLOCK | Macro |
Acquire an exclusive lock on the file, as with flock .
See File Locks. This is atomic like O_SHLOCK .
|