|
|
1.1 ! root 1: .TH OPEN 2 "2 July 1983" ! 2: .UC 4 ! 3: .SH NAME ! 4: open \- open a file for reading or writing, or create a new file ! 5: .SH SYNOPSIS ! 6: .nf ! 7: .ft B ! 8: #include <sys/file.h> ! 9: .PP ! 10: .ft B ! 11: open(path, flags, mode) ! 12: char *path; ! 13: int flags, mode; ! 14: .fi ! 15: .SH DESCRIPTION ! 16: .I Open ! 17: opens the file ! 18: .I path ! 19: for reading and/or writing, as specified by the ! 20: .I flags ! 21: argument and returns a descriptor for that file. ! 22: The ! 23: .I flags ! 24: argument may indicate the file is to be ! 25: created if it does not already exist (by specifying the ! 26: O_CREAT flag), in which case the file is created with mode ! 27: .I mode ! 28: as described in ! 29: .IR chmod (2) ! 30: and modified by the process' umask value (see ! 31: .IR umask (2)). ! 32: .PP ! 33: .I Path ! 34: is the address of a string of ASCII characters representing ! 35: a path name, terminated by a null character. ! 36: The flags specified are formed by ! 37: .IR or 'ing ! 38: the following values ! 39: .PP ! 40: .RS ! 41: O_RDONLY open for reading only ! 42: O_WRONLY open for writing only ! 43: O_RDWR open for reading and writing ! 44: O_NDELAY do not block on open ! 45: O_APPEND append on each write ! 46: O_CREAT create file if it does not exist ! 47: O_TRUNC truncate size to 0 ! 48: O_EXCL error if create and file exists ! 49: .RE ! 50: .PP ! 51: Opening a file with O_APPEND set causes each write on the file ! 52: to be appended to the end. If O_TRUNC is specified and the ! 53: file exists, the file is truncated to zero length. ! 54: If O_EXCL is set with O_CREAT, then if the file already ! 55: exists, the open returns an error. This can be used to ! 56: implement a simple exclusive access locking mechanism. ! 57: If the O_NDELAY flag is specified and the open call would result ! 58: in the process being blocked for some reason (e.g. waiting for ! 59: carrier on a dialup line), the open returns immediately. ! 60: The first time the process attempts to perform i/o on the open ! 61: file it will block (not currently implemented). ! 62: .PP ! 63: Upon successful completion a non-negative integer termed a ! 64: file descriptor is returned. ! 65: The file pointer used to mark the current position within the ! 66: file is set to the beginning of the file. ! 67: .PP ! 68: The new descriptor is set to remain open across ! 69: .IR execve ! 70: system calls; see ! 71: .IR close (2). ! 72: .PP ! 73: No process may have more than {OPEN_MAX} file descriptors open ! 74: simultaneously. ! 75: .SH "ERRORS ! 76: The named file is opened unless one or more of the ! 77: following are true: ! 78: .TP 15 ! 79: [EPERM] ! 80: The pathname contains a character with the high-order bit set. ! 81: .TP 15 ! 82: [ENOTDIR] ! 83: A component of the path prefix is not a directory. ! 84: .TP 15 ! 85: [ENOENT] ! 86: O_CREAT is not set and the named file does not exist. ! 87: .TP 15 ! 88: [EACCES] ! 89: A component of the path prefix denies search permission. ! 90: .TP 15 ! 91: [EACCES] ! 92: The required permissions (for reading and/or writing) ! 93: are denied for the named flag. ! 94: .TP 15 ! 95: [EISDIR] ! 96: The named file is a directory, and the arguments specify ! 97: it is to be opened for writting. ! 98: .TP 15 ! 99: [EROFS] ! 100: The named file resides on a read-only file system, ! 101: and the file is to be modified. ! 102: .TP 15 ! 103: [EMFILE] ! 104: {OPEN_MAX} file descriptors are currently open. ! 105: .TP 15 ! 106: [ENXIO] ! 107: The named file is a character special or block ! 108: special file, and the device associated with this special file ! 109: does not exist. ! 110: .TP 15 ! 111: [ETXTBSY] ! 112: The file is a pure procedure (shared text) file that is being ! 113: executed and the \fIopen\fP call requests write access. ! 114: .TP 15 ! 115: [EFAULT] ! 116: .I Path ! 117: points outside the process's allocated address space. ! 118: .TP 15 ! 119: [ELOOP] ! 120: Too many symbolic links were encountered in translating the pathname. ! 121: .TP 15 ! 122: [EEXIST] ! 123: O_EXCL was specified and the file exists. ! 124: .TP 15 ! 125: [ENXIO] ! 126: The O_NDELAY flag is given, and the file is a communications device ! 127: on which their is no carrier present. ! 128: .TP 15 ! 129: [EOPNOTSUPP] ! 130: An attempt was made to open a socket (not currently implemented). ! 131: .SH "SEE ALSO" ! 132: chmod(2), close(2), dup(2), lseek(2), read(2), write(2), umask(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.