OPEN.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:5k
- ." Copyright (c) 1980 Regents of the University of California.
- ." All rights reserved. The Berkeley software License Agreement
- ." specifies the terms and conditions for redistribution.
- ."
- ." @(#)open.2 6.4 (Berkeley) 5/14/86
- ."
- .TH OPEN 2 "May 14, 1986"
- .UC 4
- .SH NAME
- open - open a file for reading or writing, or create a new file
- .SH SYNOPSIS
- .nf
- .ft B
- #include <sys/types.h>
- #include <fcntl.h>
- int open(const char *fIpathfP, int fIflagsfP fR[fP, mode_t fImodefPfR]fP)
- .ft R
- .fi
- .SH DESCRIPTION
- .B Open
- opens the file
- .I path
- for reading and/or writing, as specified by the
- .I flags
- argument and returns a descriptor for that file.
- The
- .I 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
- .I mode
- as described in
- .BR chmod (2)
- and modified by the process' umask value (see
- .BR umask (2)).
- .PP
- .I 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
- .IR or 'ing
- the following values
- .PP
- .RS
- .ta +12n
- .nf
- 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
- .fi
- .DT
- .RE
- .PP
- 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.
- .PP
- 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.
- .PP
- The new descriptor is set to remain open across
- .BR execve
- system calls; see
- .BR close (2).
- .PP
- The system imposes a limit on the number of descriptors
- open simultaneously by one process.
- .SH "ERRORS
- The named file is opened unless one or more of the
- following are true:
- .TP 15
- [ENOTDIR]
- A component of the path prefix is not a directory.
- .TP 15
- [ENAMETOOLONG]
- The path name exceeds PATH_MAX characters.
- .TP 15
- [ENOENT]
- O_CREAT is not set and the named file does not exist.
- .TP 15
- [ENOENT]
- A component of the path name that must exist does not exist.
- .TP 15
- [EACCES]
- Search permission is denied for a component of the path prefix.
- .TP 15
- [EACCES]
- The required permissions (for reading and/or writing)
- are denied for the named file.
- .TP 15
- [EACCES]
- O_CREAT is specified,
- the file does not exist,
- and the directory in which it is to be created
- does not permit writing.
- .TP 15
- [EACCES]
- A device to be opened for writing is physically write protected.
- .TP 15
- [ELOOP]
- Too many symbolic links were encountered in translating the pathname.
- (Minix-vmd)
- .TP 15
- [EISDIR]
- The named file is a directory, and the arguments specify
- it is to be opened for writing.
- .TP 15
- [EROFS]
- The named file resides on a read-only file system,
- and the file is to be modified.
- .TP 15
- [EMFILE]
- The system limit for open file descriptors per process has already been reached.
- .TP 15
- [ENFILE]
- The system file table is full.
- .TP 15
- [ENXIO]
- The named file is a character special or block
- special file, and the device associated with this special file
- does not exist.
- .TP 15
- [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.
- .TP 15
- [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.
- .ig
- .TP 15
- [EDQUOT]
- O_CREAT is specified,
- the file does not exist,
- and the directory in which the entry for the new fie
- is being placed cannot be extended because the
- user's quota of disk blocks on the file system
- containing the directory has been exhausted.
- .TP 15
- [EDQUOT]
- O_CREAT is specified,
- the file does not exist,
- and the user's quota of inodes on the file system on
- which the file is being created has been exhausted.
- ..
- .TP 15
- [EIO]
- An I/O error occurred while making the directory entry or
- allocating the inode for O_CREAT.
- .TP 15
- [EFAULT]
- .I Path
- points outside the process's allocated address space.
- .TP 15
- [EEXIST]
- O_CREAT and O_EXCL were specified and the file exists.
- .SH "SEE ALSO"
- .BR chmod (2),
- .BR close (2),
- .BR dup (2),
- .BR fcntl (2),
- .BR lseek (2),
- .BR read (2),
- .BR write (2),
- .BR umask (2).