Open opens the file for I/O and returns an associated file descriptor.
Omode is one of OREAD, OWRITE, ORDWR, or 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 omode: OTRUNC
says to truncate the file to zero length
before opening it; OCEXEC says to close the file when an exec(2)
or execl system call is made; and ORCLOSE says to remove the file
when it is closed (by everyone who has a copy of the file descriptor).
Open fails if the file does not exist or the user does not have
permission to open it for the requested purpose (see
stat(2) for a description of permissions). The user must have
write permission on the file if the OTRUNC bit is set. For the
open system call (unlike the implicit open in exec(2)), OEXEC
is actually identical to OREAD.
Create creates a new file or prepares to rewrite an existing file,
opens it according to omode (as described for 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 perm ANDed
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 DMDIR bit is set in perm, an exclusive–use file if the DMEXCL
bit is set, and an append–only file if the 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 open(5).
Create fails if the path up to the last element of 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 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 intro(2)) then the constituent
directory where the file is created depends on the structure of
the union: see bind(2).
Since create may succeed even if the file exists, a special mechanism
is necessary for those applications that require an atomic create
operation. If the OEXCL (0x1000) bit is set in the mode for a
create, the call succeeds only if the file does not already exist;
see open(5) for details.
Close closes the file associated with a file descriptor. Provided
the file descriptor is a valid open descriptor, close is guaranteed
to close it; there will be no error. Files are closed automatically
upon termination of a process; close allows the file descriptor
to be reused.|