OPEN.2
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:5k
源码类别:

操作系统开发

开发平台:

C/C++

  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.4 (Berkeley) 5/14/86
  6. ."
  7. .TH OPEN 2 "May 14, 1986"
  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/types.h>
  15. #include <fcntl.h>
  16. int open(const char *fIpathfP, int fIflagsfP fR[fP, mode_t fImodefPfR]fP)
  17. .ft R
  18. .fi
  19. .SH DESCRIPTION
  20. .B Open
  21. opens the file
  22. .I path
  23. for reading and/or writing, as specified by the
  24. .I flags
  25. argument and returns a descriptor for that file.
  26. The
  27. .I flags
  28. argument may indicate the file is to be
  29. created if it does not already exist (by specifying the
  30. O_CREAT flag), in which case the file is created with mode
  31. .I mode
  32. as described in
  33. .BR chmod (2)
  34. and modified by the process' umask value (see
  35. .BR umask (2)).
  36. .PP
  37. .I Path
  38. is the address of a string of ASCII characters representing
  39. a path name, terminated by a null character.
  40. The flags specified are formed by
  41. .IR or 'ing
  42. the following values
  43. .PP
  44. .RS
  45. .ta +12n
  46. .nf
  47. O_RDONLY open for reading only
  48. O_WRONLY open for writing only
  49. O_RDWR open for reading and writing
  50. O_NONBLOCK 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. .fi
  56. .DT
  57. .RE
  58. .PP
  59. Opening a file with O_APPEND set causes each write on the file
  60. to be appended to the end.  If O_TRUNC is specified and the
  61. file exists, the file is truncated to zero length.
  62. If O_EXCL is set with O_CREAT, then if the file already
  63. exists, the open returns an error.  This can be used to
  64. implement a simple exclusive access locking mechanism.
  65. If O_EXCL is set and the last component of the pathname is
  66. a symbolic link, the open will fail even if the symbolic
  67. link points to a non-existent name.
  68. If the O_NONBLOCK flag is specified and the open call would result
  69. in the process being blocked for some reason, the open returns immediately. 
  70. .PP
  71. Upon successful completion a non-negative integer termed a
  72. file descriptor is returned.
  73. The file pointer used to mark the current position within the
  74. file is set to the beginning of the file.
  75. .PP
  76. The new descriptor is set to remain open across
  77. .BR execve
  78. system calls; see
  79. .BR close (2).
  80. .PP
  81. The system imposes a limit on the number of descriptors
  82. open simultaneously by one process.
  83. .SH "ERRORS
  84. The named file is opened unless one or more of the
  85. following are true:
  86. .TP 15
  87. [ENOTDIR]
  88. A component of the path prefix is not a directory.
  89. .TP 15
  90. [ENAMETOOLONG]
  91. The path name exceeds PATH_MAX characters.
  92. .TP 15
  93. [ENOENT]
  94. O_CREAT is not set and the named file does not exist.
  95. .TP 15
  96. [ENOENT]
  97. A component of the path name that must exist does not exist.
  98. .TP 15
  99. [EACCES]
  100. Search permission is denied for a component of the path prefix.
  101. .TP 15
  102. [EACCES]
  103. The required permissions (for reading and/or writing)
  104. are denied for the named file.
  105. .TP 15
  106. [EACCES]
  107. O_CREAT is specified,
  108. the file does not exist,
  109. and the directory in which it is to be created
  110. does not permit writing.
  111. .TP 15
  112. [EACCES]
  113. A device to be opened for writing is physically write protected.
  114. .TP 15
  115. [ELOOP]
  116. Too many symbolic links were encountered in translating the pathname.
  117. (Minix-vmd)
  118. .TP 15
  119. [EISDIR]
  120. The named file is a directory, and the arguments specify
  121. it is to be opened for writing.
  122. .TP 15
  123. [EROFS]
  124. The named file resides on a read-only file system,
  125. and the file is to be modified.
  126. .TP 15
  127. [EMFILE]
  128. The system limit for open file descriptors per process has already been reached.
  129. .TP 15
  130. [ENFILE]
  131. The system file table is full.
  132. .TP 15
  133. [ENXIO]
  134. The named file is a character special or block
  135. special file, and the device associated with this special file
  136. does not exist.
  137. .TP 15
  138. [ENOSPC]
  139. O_CREAT is specified,
  140. the file does not exist,
  141. and the directory in which the entry for the new file is being placed
  142. cannot be extended because there is no space left on the file
  143. system containing the directory.
  144. .TP 15
  145. [ENOSPC]
  146. O_CREAT is specified,
  147. the file does not exist,
  148. and there are no free inodes on the file system on which the
  149. file is being created.
  150. .ig
  151. .TP 15
  152. [EDQUOT]
  153. O_CREAT is specified,
  154. the file does not exist,
  155. and the directory in which the entry for the new fie
  156. is being placed cannot be extended because the
  157. user's quota of disk blocks on the file system
  158. containing the directory has been exhausted.
  159. .TP 15
  160. [EDQUOT]
  161. O_CREAT is specified,
  162. the file does not exist,
  163. and the user's quota of inodes on the file system on
  164. which the file is being created has been exhausted.
  165. ..
  166. .TP 15
  167. [EIO]
  168. An I/O error occurred while making the directory entry or
  169. allocating the inode for O_CREAT.
  170. .TP 15
  171. [EFAULT]
  172. .I Path
  173. points outside the process's allocated address space.
  174. .TP 15
  175. [EEXIST]
  176. O_CREAT and O_EXCL were specified and the file exists.
  177. .SH "SEE ALSO"
  178. .BR chmod (2),
  179. .BR close (2),
  180. .BR dup (2),
  181. .BR fcntl (2),
  182. .BR lseek (2),
  183. .BR read (2),
  184. .BR write (2),
  185. .BR umask (2).