.TH OPEN 3
.SH NAME
open, create, close \- open a file for reading or writing, create file
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.B
int open(char *file, int omode)
.PP
.B
int create(char *file, int omode, ulong perm)
.PP
.B
int close(int fd)
.SH DESCRIPTION
.I Open
opens the
.I file
for I/O and returns an associated file descriptor.
.I Omode
is one of
.BR OREAD ,
.BR OWRITE ,
.BR ORDWR ,
or
.BR OEXEC ,
asking for permission to read, write, read and write, or execute, respectively.
In addition, there are three values that can be ORed with the
.IR omode :
.B OTRUNC
says to truncate the file
to zero length before opening it;
.B OCEXEC
says to close the file when an
.IR exec (3)
or
.I execl
system call is made;
and
.B ORCLOSE
says to remove the file when it is closed (by everyone who has a copy of the file descriptor).
.I Open
fails if the file does not exist or the user does not have
permission to open it for the requested purpose
(see
.IR stat (3)
for a description of permissions).
The user must have write permission on the
.I file
if the
.B OTRUNC
bit is set.
For the
.I open
system call
(unlike the implicit
.I open
in
.IR exec (3)),
.B OEXEC
is actually identical to
.BR OREAD .
.PP
.I Create
creates a new
.I file
or prepares to rewrite an existing
.IR file ,
opens it according to
.I omode
(as described for
.IR open ),
and returns an associated file descriptor.
If the file is new,
the owner is set to the userid of the creating process group;
the group to that of the containing directory;
the permissions to
.I perm
ANDed with the permissions of the containing directory.
If the file already exists,
it is truncated to 0 length,
and the permissions, owner, and group remain unchanged.
The created file is a directory if the
.B DMDIR
bit is set in
.IR perm ,
an exclusive-use file if the
.B DMEXCL
bit is set, and an append-only file if the
.B DMAPPEND
bit is set.
Exclusive-use files may be open for I/O by only one client at a time,
but the file descriptor may become invalid if no I/O is done
for an extended period; see
.IR open (9p).
.PP
.I Create
fails if the path up to the last element of
.I file
cannot be evaluated, if the user doesn't have write permission
in the final directory, if the file already exists and
does not permit the access defined by
.IR omode ,
of if there there are no free file descriptors.
In the last case, the file may be created even when
an error is returned.
.\" If the file is new and the directory in which it is created is
.\" a union directory (see
.\" .IR intro (3))
.\" then the constituent directory where the file is created
.\" depends on the structure of the union: see
.\" .IR bind (3).
.PP
Since
.I create
may succeed even if the file exists, a special mechanism is necessary
for those applications that require an atomic create operation.
If the
.B OEXCL
.RB ( 0x1000 )
bit is set in the
.I mode
for a
.IR create,
the call succeeds only if the file does not already exist;
see
.IR open (9p)
for details.
.PP
.I Close
closes the file associated with a file descriptor.
Provided the file descriptor is a valid open descriptor,
.I close
is guaranteed to close it; there will be no error.
Files are closed automatically upon termination of a process;
.I close
allows the file descriptor to be reused.
.SH SOURCE
.B /usr/local/plan9/src/lib9
.SH SEE ALSO
.IR intro (3),
.IR stat (3)
.SH DIAGNOSTICS
These functions set
.IR errstr .
