Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ open(S) — OpenDesktop Software Development System 1.0.0d

Media Vault

Software Library

Restoration Projects

Artifacts Sought



     OPEN(S)                   UNIX System V                   OPEN(S)



     Name
          open - open for reading or writing

     Syntax
          #include <fcntl.h>
          int open (path, oflag [, mode] )
          char *path;
          int oflag, mode;

     Description
          path points to a path name naming a file.  The open system
          call opens a file descriptor for the named file and sets the
          file status flags according to the value of oflag.  For
          non-STREAMS (see intro(S)) files, oflag values are
          constructed by OR-ing flags from the following list (only
          one of the first three flags below may be used):

          O_RDONLY Open for reading only.

          O_WRONLY Open for writing only.

          O_RDWR   Open for reading and writing.

          O_NDELAY This flag may affect subsequent reads and writes
                   (see read(S) and write(S)).

                   When opening a FIFO with O_RDONLY or O_WRONLY set:

                   If O_NDELAY is set:

                        An open for reading-only will return without
                        delay.  An open for writing-only will return
                        an error if no process currently has the file
                        open for reading.

                   If O_NDELAY is clear:

                        An open for reading-only will block until a
                        process opens the file for writing.  An open
                        for writing-only will block until a process
                        opens the file for reading.

                   When opening a file associated with a communication
                   line:

                   If O_NDELAY is set:

                        The open will return without waiting for
                        carrier.

                   If O_NDELAY is clear:
                        The open will block until carrier is present.

          O_APPEND If set, the file pointer will be set to the end of
                   the file prior to each write.

          O_SYNC   When opening a regular file, this flag affects
                   subsequent writes.  If set, each write(S) will wait
                   for both the file data and file status to be
                   physically updated.

          O_CREAT  If the file exists, this flag has no effect.
                   Otherwise, the owner ID of the file is set to the
                   effective user ID of the process; the group ID of
                   the file is set to the effective group ID of the
                   process; and the low-order 12 bits of the file mode
                   are set to the value of mode, modified as follows
                   [see creat(S)):

                        All bits set in the file mode creation mask of
                        the process are cleared (see umask(S)).

                        The ``save text image after execution bit'' of
                        the mode is cleared (see chmod(S)).

          O_TRUNC  If the file exists, its length is truncated to 0
                   and the mode and owner are unchanged.

          O_EXCL   If O_EXCL and O_CREAT are set, open will fail if
                   the file exists.

          When opening a STREAMS file, oflag may be constructed from
          O_NDELAY or-ed with either O_RDONLY, O_WRONLY or O_RDWR.
          Other flag values are not applicable to STREAMS devices and
          have no effect on them.  The value of O_NDELAY affects the
          operation of STREAMS drivers and certain system calls (see
          read(S), getmsg(S), putmsg(S), and write(S)).  For drivers,
          the implementation of O_NDELAY is device-specific.  Each
          STREAMS device driver may treat this option differently.

          Certain flag values can be set following open as described
          in fcntl(S).

          The file pointer used to mark the current position within
          the file is set to the beginning of the file.

          The new file descriptor is set to remain open across exec
          system calls (see fcntl(S)).

          The named file is opened unless one or more of the following
          is true:

          [EACCES]       A component of the path prefix denies search
                         permission.

          [EACCES]       oflag permission is denied for the named
                         file.

          [EAGAIN]       The file exists, mandatory file/record
                         locking is set, and there are outstanding
                         record locks on the file (see chmod (S)).

          [EEXIST]       O_CREAT and O_EXCL are set, and the named
                         file exists.

          [EFAULT]       path points outside the allocated address
                         space of the process.

          [EINTR]        A signal was caught during the open system
                         call.

          [EIO]          A hangup or error occurred during a STREAMS
                         open.

          [EISDIR]       The named file is a directory and oflag is
                         write or read/write.

          [EMFILE]       No file descriptors are currently open.

          [EMULTIHOP]    Components of path require hopping to
                         multiple remote machines.

          [ENFILE]       The system file table is full.

          [ENOENT]       O_CREAT is not set and the named file does
                         not exist.

          [ENOLINK]      path points to a remote machine, and the link
                         to that machine is no longer active.

          [ENOMEM]       The system is unable to allocate a send
                         descriptor.

          [ENOSPC]       O_CREAT and O_EXCL are set, and the file
                         system is out of inodes.

          [ENOSR]        Unable to allocate a stream.

          [ENOTDIR]      A component of the path prefix is not a
                         directory.

          [ENXIO]        The named file is a character special or
                         block special file, and the device associated
                         with this special file does not exist.

          [ENXIO]        O_NDELAY is set, the named file is a FIFO,
                         O_WRONLY is set, and no process has the file
                         open for reading.

          [ENXIO]        A STREAMS module or driver open routine
                         failed.

          [EROFS]        The named file resides on a read-only file
                         system and oflag is write or read/write.

          [ETXTBSY]      The file is a pure procedure (shared text)
                         file that is being executed and oflag is
                         write or read/write.

     See Also
          chmod(S), close(S), creat(S), dup(S), fcntl(S), intro(S),
          lseek(S), read(S), getmsg(S), putmsg(S), umask(S), write(S)

     Diagnostics
          Upon successful completion, the file descriptor is returned.
          Otherwise, a value of -1 is returned, and errno is set to
          indicate the error.

     Standards Conformance
          open is conformant with:
          AT&T SVID Issue 2, Select Code 307-127;
          The X/Open Portability Guide II of January 1987;
          IEEE POSIX Std 1003.1-1988 with C Standard Language-
          Dependent System Support;
          and NIST FIPS 151-1.


                                             (printed 6/20/89)



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026