OPEN.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:6k
- OPEN(2) Minix Programmer's Manual OPEN(2)
- NAME
- open - open a file for reading or writing, or create a new file
- SYNOPSIS
- #include <sys/types.h>
- #include <fcntl.h>
- int open(const char *path, int flags [, mode_t mode])
- DESCRIPTION
- Open opens the file path for reading and/or writing, as specified by the
- flags argument and returns a descriptor for that file. The flags
- argument may indicate the file is to be created if it does not already
- exist (by specifying the O_CREAT flag), in which case the file is created
- with mode mode as described in chmod(2) and modified by the process'
- umask value (see umask(2)).
- Path is the address of a string of ASCII characters representing a path
- name, terminated by a null character. The flags specified are formed by
- or'ing the following values
- O_RDONLY open for reading only
- O_WRONLY open for writing only
- O_RDWR open for reading and writing
- O_NONBLOCK do not block on open
- O_APPEND append on each write
- O_CREAT create file if it does not exist
- O_TRUNC truncate size to 0
- O_EXCL error if create and file exists
- Opening a file with O_APPEND set causes each write on the file to be
- appended to the end. If O_TRUNC is specified and the file exists, the
- file is truncated to zero length. If O_EXCL is set with O_CREAT, then if
- the file already exists, the open returns an error. This can be used to
- implement a simple exclusive access locking mechanism. If O_EXCL is set
- and the last component of the pathname is a symbolic link, the open will
- fail even if the symbolic link points to a non-existent name. If the
- O_NONBLOCK flag is specified and the open call would result in the
- process being blocked for some reason, the open returns immediately.
- Upon successful completion a non-negative integer termed a file
- descriptor is returned. The file pointer used to mark the current
- position within the file is set to the beginning of the file.
- The new descriptor is set to remain open across execve system calls; see
- close(2).
- The system imposes a limit on the number of descriptors open
- simultaneously by one process.
- 4BSD May 14, 1986 1
- OPEN(2) Minix Programmer's Manual OPEN(2)
- ERRORS
- The named file is opened unless one or more of the following are true:
- [ENOTDIR] A component of the path prefix is not a directory.
- [ENAMETOOLONG] The path name exceeds PATH_MAX characters.
- [ENOENT] O_CREAT is not set and the named file does not exist.
- [ENOENT] A component of the path name that must exist does not
- exist.
- [EACCES] Search permission is denied for a component of the path
- prefix.
- [EACCES] The required permissions (for reading and/or writing) are
- denied for the named file.
- [EACCES] O_CREAT is specified, the file does not exist, and the
- directory in which it is to be created does not permit
- writing.
- [EACCES] A device to be opened for writing is physically write
- protected.
- [ELOOP] Too many symbolic links were encountered in translating
- the pathname. (Minix-vmd)
- [EISDIR] The named file is a directory, and the arguments specify
- it is to be opened for writing.
- [EROFS] The named file resides on a read-only file system, and the
- file is to be modified.
- [EMFILE] The system limit for open file descriptors per process has
- already been reached.
- [ENFILE] The system file table is full.
- [ENXIO] The named file is a character special or block special
- file, and the device associated with this special file
- does not exist.
- [ENOSPC] O_CREAT is specified, the file does not exist, and the
- directory in which the entry for the new file is being
- placed cannot be extended because there is no space left
- on the file system containing the directory.
- 4BSD May 14, 1986 2
- OPEN(2) Minix Programmer's Manual OPEN(2)
- [ENOSPC] O_CREAT is specified, the file does not exist, and there
- are no free inodes on the file system on which the file is
- being created.
- [EIO] An I/O error occurred while making the directory entry or
- allocating the inode for O_CREAT.
- [EFAULT] Path points outside the process's allocated address space.
- [EEXIST] O_CREAT and O_EXCL were specified and the file exists.
- SEE ALSO
- chmod(2), close(2), dup(2), fcntl(2), lseek(2), read(2), write(2),
- umask(2).
- 4BSD May 14, 1986 3