OPEN(2)                                                   OPEN(2)

     NAME
          open, create, close - open a file for reading or writing,
          create file

     SYNOPSIS
          int open(char *file, int omode)

          int create(char *file, int omode, ulong perm)

          int close(int fd)

     DESCRIPTION
          Open opens the file and returns an associated file descrip-
          tor.  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 it open).  The omode values are defined in <libc.h>.
          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 with the permissions of the con-
          taining directory.  If the file already exists, it is trun-
          cated to 0 length, and the permissions, owner, and group
          remain unchanged.  The created file is a directory if the
          CHDIR bit is set in omode. 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, or if
          the file already exists and does not permit the access
          defined by omode. 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).

          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 upon termination of a process; close allows

     Page 1                       Plan 9             (printed 4/25/24)

     OPEN(2)                                                   OPEN(2)

          the file descriptor to be reused.

     SEE ALSO
          intro(2), bind(2), stat(2)

     DIAGNOSTICS
          These functions set errstr.

     Page 2                       Plan 9             (printed 4/25/24)