Annotation of 43BSDReno/lib/libc/sys/open.2, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)open.2      6.5 (Berkeley) 8/12/88
        !             6: .\"
        !             7: .TH OPEN 2 "August 12, 1988"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: open \- open a file for reading or writing, or create a new file
        !            11: .SH SYNOPSIS
        !            12: .nf
        !            13: .ft B
        !            14: #include <sys/file.h>
        !            15: .PP
        !            16: .ft B
        !            17: open(path, flags, mode)
        !            18: char *path;
        !            19: int flags, mode;
        !            20: .fi
        !            21: .SH DESCRIPTION
        !            22: .I Open
        !            23: opens the file
        !            24: .I path
        !            25: for reading and/or writing, as specified by the
        !            26: .I flags
        !            27: argument and returns a descriptor for that file.
        !            28: The
        !            29: .I flags
        !            30: argument may indicate the file is to be
        !            31: created if it does not already exist (by specifying the
        !            32: O_CREAT flag), in which case the file is created with mode
        !            33: .I mode
        !            34: as described in
        !            35: .IR chmod (2)
        !            36: and modified by the process' umask value (see
        !            37: .IR umask (2)).
        !            38: .PP
        !            39: .I Path
        !            40: is the address of a string of ASCII characters representing
        !            41: a path name, terminated by a null character.
        !            42: The flags specified are formed by
        !            43: .IR or 'ing
        !            44: the following values
        !            45: .PP
        !            46: .RS
        !            47:  O_RDONLY      open for reading only
        !            48:  O_WRONLY      open for writing only
        !            49:  O_RDWR        open for reading and writing
        !            50:  O_NDELAY      do not block on open
        !            51:  O_APPEND      append on each write
        !            52:  O_CREAT       create file if it does not exist
        !            53:  O_TRUNC       truncate size to 0
        !            54:  O_EXCL        error if create and file exists
        !            55: .RE
        !            56: .PP
        !            57: Opening a file with O_APPEND set causes each write on the file
        !            58: to be appended to the end.  If O_TRUNC is specified and the
        !            59: file exists, the file is truncated to zero length.
        !            60: If O_EXCL is set with O_CREAT, then if the file already
        !            61: exists, the open returns an error.  This can be used to
        !            62: implement a simple exclusive access locking mechanism.
        !            63: If O_EXCL is set and the last component of the pathname is
        !            64: a symbolic link, the open will fail even if the symbolic
        !            65: link points to a non-existent name.
        !            66: If the O_NDELAY flag is specified and the open call would result
        !            67: in the process being blocked for some reason (e.g. waiting for
        !            68: carrier on a dialup line), the open returns immediately. 
        !            69: The first time the process attempts to perform i/o on the open
        !            70: file it will block (not currently implemented).
        !            71: .PP
        !            72: If successful, \fIopen\fP returns a non-negative integer, termed a
        !            73: file descriptor.  It returns -1 on failure.
        !            74: The file pointer used to mark the current position within the
        !            75: file is set to the beginning of the file.
        !            76: .PP
        !            77: The new descriptor is set to remain open across
        !            78: .IR execve
        !            79: system calls; see
        !            80: .IR close (2).
        !            81: .PP
        !            82: The system imposes a limit on the number of file descriptors
        !            83: open simultaneously by one process.
        !            84: .IR Getdtablesize (2)
        !            85: returns the current system limit.
        !            86: .SH "ERRORS
        !            87: The named file is opened unless one or more of the
        !            88: following are true:
        !            89: .TP 15
        !            90: [ENOTDIR]
        !            91: A component of the path prefix is not a directory.
        !            92: .TP 15
        !            93: [EINVAL]
        !            94: The pathname contains a character with the high-order bit set.
        !            95: .TP 15
        !            96: [ENAMETOOLONG]
        !            97: A component of a pathname exceeded 255 characters,
        !            98: or an entire path name exceeded 1023 characters.
        !            99: .TP 15
        !           100: [ENOENT]
        !           101: O_CREAT is not set and the named file does not exist.
        !           102: .TP 15
        !           103: [ENOENT]
        !           104: A component of the path name that must exist does not exist.
        !           105: .TP 15
        !           106: [EACCES]
        !           107: Search permission is denied for a component of the path prefix.
        !           108: .TP 15
        !           109: [EACCES]
        !           110: The required permissions (for reading and/or writing)
        !           111: are denied for the named flag.
        !           112: .TP 15
        !           113: [EACCES]
        !           114: O_CREAT is specified,
        !           115: the file does not exist,
        !           116: and the directory in which it is to be created
        !           117: does not permit writing.
        !           118: .TP 15
        !           119: [ELOOP]
        !           120: Too many symbolic links were encountered in translating the pathname.
        !           121: .TP 15
        !           122: [EISDIR]
        !           123: The named file is a directory, and the arguments specify
        !           124: it is to be opened for writting.
        !           125: .TP 15
        !           126: [EROFS]
        !           127: The named file resides on a read-only file system,
        !           128: and the file is to be modified.
        !           129: .TP 15
        !           130: [EMFILE]
        !           131: The system limit for open file descriptors per process has already been reached.
        !           132: .TP 15
        !           133: [ENFILE]
        !           134: The system file table is full.
        !           135: .TP 15
        !           136: [ENXIO]
        !           137: The named file is a character special or block
        !           138: special file, and the device associated with this special file
        !           139: does not exist.
        !           140: .TP 15
        !           141: [ENOSPC]
        !           142: O_CREAT is specified,
        !           143: the file does not exist,
        !           144: and the directory in which the entry for the new file is being placed
        !           145: cannot be extended because there is no space left on the file
        !           146: system containing the directory.
        !           147: .TP 15
        !           148: [ENOSPC]
        !           149: O_CREAT is specified,
        !           150: the file does not exist,
        !           151: and there are no free inodes on the file system on which the
        !           152: file is being created.
        !           153: .TP 15
        !           154: [EDQUOT]
        !           155: O_CREAT is specified,
        !           156: the file does not exist,
        !           157: and the directory in which the entry for the new fie
        !           158: is being placed cannot be extended because the
        !           159: user's quota of disk blocks on the file system
        !           160: containing the directory has been exhausted.
        !           161: .TP 15
        !           162: [EDQUOT]
        !           163: O_CREAT is specified,
        !           164: the file does not exist,
        !           165: and the user's quota of inodes on the file system on
        !           166: which the file is being created has been exhausted.
        !           167: .TP 15
        !           168: [EIO]
        !           169: An I/O error occurred while making the directory entry or
        !           170: allocating the inode for O_CREAT.
        !           171: .TP 15
        !           172: [ETXTBSY]
        !           173: The file is a pure procedure (shared text) file that is being
        !           174: executed and the \fIopen\fP call requests write access.
        !           175: .TP 15
        !           176: [EFAULT]
        !           177: .I Path
        !           178: points outside the process's allocated address space.
        !           179: .TP 15
        !           180: [EEXIST]
        !           181: O_CREAT and O_EXCL were specified and the file exists.
        !           182: .TP 15
        !           183: [EOPNOTSUPP]
        !           184: An attempt was made to open a socket (not currently implemented).
        !           185: .SH "SEE ALSO"
        !           186: chmod(2), close(2), dup(2), getdtablesize(2),
        !           187: lseek(2), read(2), write(2), umask(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.