Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chmod(2)

close(2)

creat(2)

dup(2)

fcntl(2)

intro(2)

lseek(2)

read(2)

getmsg(2)

putmsg(2)

umask(2)

write(2)

OPEN(2)                              SysV                              OPEN(2)



NAME
     open - open for reading or writing

SYNOPSIS
     #include <fcntl.h>

     int open (path, oflag[, mode])
     char *path;
     int oflag, mode;

DESCRIPTION
     path points to a pathname naming a file.  open 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(2)) files, oflag values are
     constructed by ORing 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(2)
               and write(2)).

               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, 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(2) 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(2)):

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

               ⊕  The "save text image after execution bit" of the mode is
                  cleared (see chmod(2)).

     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 ORed
     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(2), getmsg(2), putmsg(2), and write(2)).  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(2).

     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(2)).

ERRORS
     The named file is opened unless one or more of the following are 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(2)).

     [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]      NOFILES file descriptors are currently open.

     [ENFILE]      The system file table is full.

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

     [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
                   space.

     [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(2), close(2), creat(2), dup(2), fcntl(2), intro(2), lseek(2),
     read(2), getmsg(2), putmsg(2), umask(2), write(2).

DIAGNOSTICS
     Upon successful completion, the file descriptor is returned.  Otherwise,
     a value of -1 is returned and errno is set as indicated under "Errors."

NOTES
     Not including any of O_RDONLY, O_WRONLY, or O_RDWR among the values ORed
     to obtain oflag implies opening the file pointed to by path for reading
     only.

     Under other implementations, open fails if any of the following are true:

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

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

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