📄 open.2
字号:
.\" Copyright (c) 1980, 1991, 1993.\" The Regents of the University of California. All rights reserved..\".\" Redistribution and use in source and binary forms, with or without.\" modification, are permitted provided that the following conditions.\" are met:.\" 1. Redistributions of source code must retain the above copyright.\" notice, this list of conditions and the following disclaimer..\" 2. Redistributions in binary form must reproduce the above copyright.\" notice, this list of conditions and the following disclaimer in the.\" documentation and/or other materials provided with the distribution..\" 3. All advertising materials mentioning features or use of this software.\" must display the following acknowledgement:.\" This product includes software developed by the University of.\" California, Berkeley and its contributors..\" 4. Neither the name of the University nor the names of its contributors.\" may be used to endorse or promote products derived from this software.\" without specific prior written permission..\".\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION).\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF.\" SUCH DAMAGE..\".\" @(#)open.2 8.2 (Berkeley) 11/16/93.\".Dd November 16, 1993.Dt OPEN 2.Os BSD 4.Sh NAME.Nm open.Nd open or create a file for reading or writing.Sh SYNOPSIS.Fd #include <fcntl.h>.Ft int.Fn open "const char *path" "int flags" "mode_t mode".Sh DESCRIPTIONThe file name specified by.Fa pathis openedfor reading and/or writing as specified by theargument.Fa flagsand the file descriptor returned to the calling process.The.Fa flagsargument may indicate the file is to becreated if it does not exist (by specifying the.Dv O_CREATflag), in which case the file is created with mode.Fa modeas described in.Xr chmod 2and modified by the process' umask value (see.Xr umask 2 ) ..PpThe flags specified are formed by.Em or Ns 'ingthe following values.Pp.Bd -literal -offset indent -compactO_RDONLY open for reading onlyO_WRONLY open for writing onlyO_RDWR open for reading and writingO_NONBLOCK do not block on openO_APPEND append on each writeO_CREAT create file if it does not existO_TRUNC truncate size to 0O_EXCL error if create and file existsO_SHLOCK atomically obtain a shared lockO_EXLOCK atomically obtain an exclusive lock.Ed.PpOpening a file with.Dv O_APPENDset causes each write on the fileto be appended to the end. If.Dv O_TRUNCis specified and thefile exists, the file is truncated to zero length.If.Dv O_EXCLis set with.Dv O_CREATand the file alreadyexists,.Fn openreturns an error. This may be used toimplement a simple exclusive access locking mechanism.If.Dv O_EXCLis set and the last component of the pathname isa symbolic link,.Fn openwill fail even if the symboliclink points to a non-existent name.If the.Dv O_NONBLOCKflag is specified and the.Fn opencall would resultin the process being blocked for some reason (e.g., waiting forcarrier on a dialup line),.Fn openreturns immediately.The first time the process attempts to perform I/O on the openfile it will block (not currently implemented)..PpWhen opening a file, a lock with.Xr flock 2semantics can be obtained by setting.Dv O_SHLOCKfor a shared lock, or.Dv O_EXLOCKfor an exclusive lock.If creating a file with.Dv O_CREAT ,the request for the lock will never fail(provided that the underlying filesystem supports locking)..PpIf successful,.Fn openreturns a non-negative integer, termed a file descriptor.It returns -1 on failure.The file pointer used to mark the current position within thefile is set to the beginning of the file..PpWhen a new file is created it is given the group of the directorywhich contains it..PpThe new descriptor is set to remain open across.Xr execvesystem calls; see.Xr close 2and.Xr fcntl 2 ..PpThe system imposes a limit on the number of file descriptorsopen simultaneously by one process..Xr Getdtablesize 2returns the current system limit..Sh ERRORSThe named file is opened unless:.Bl -tag -width Er.It Bq Er ENOTDIRA component of the path prefix is not a directory..It Bq Er ENAMETOOLONGA component of a pathname exceeded 255 characters,or an entire path name exceeded 1023 characters..It Bq Er ENOENT.Dv O_CREATis not set and the named file does not exist..It Bq Er ENOENTA component of the path name that must exist does not exist..It Bq Er EACCESSearch permission is denied for a component of the path prefix..It Bq Er EACCESThe required permissions (for reading and/or writing)are denied for the given flags..It Bq Er EACCES.Dv O_CREATis specified,the file does not exist,and the directory in which it is to be createddoes not permit writing..It Bq Er ELOOPToo many symbolic links were encountered in translating the pathname..It Bq Er EISDIRThe named file is a directory, and the arguments specifyit is to be opened for writing..It Bq Er EROFSThe named file resides on a read-only file system,and the file is to be modified..It Bq Er EMFILEThe process has already reached its limit for open file descriptors..It Bq Er ENFILEThe system file table is full..It Bq Er ENXIOThe named file is a character special or blockspecial file, and the device associated with this special filedoes not exist..It Bq Er EINTRThe.Nmoperation was interrupted by a signal..It Bq Er EOPNOTSUPP.Dv O_SHLOCKor.Dv O_EXLOCKis specified but the underlying filesystem does not support locking..It Bq Er ENOSPC.Dv O_CREATis specified,the file does not exist,and the directory in which the entry for the new file is being placedcannot be extended because there is no space left on the filesystem containing the directory..It Bq Er ENOSPC.Dv O_CREATis specified,the file does not exist,and there are no free inodes on the file system on which thefile is being created..It Bq Er EDQUOT.Dv O_CREATis specified,the file does not exist,and the directory in which the entry for the new fileis being placed cannot be extended because theuser's quota of disk blocks on the file systemcontaining the directory has been exhausted..It Bq Er EDQUOT.Dv O_CREATis specified,the file does not exist,and the user's quota of inodes on the file system onwhich the file is being created has been exhausted..It Bq Er EIOAn I/O error occurred while making the directory entry orallocating the inode for.Dv O_CREAT ..It Bq Er ETXTBSYThe file is a pure procedure (shared text) file that is beingexecuted and the.Fn opencall requests write access..It Bq Er EFAULT.Fa Pathpoints outside the process's allocated address space..It Bq Er EEXIST.Dv O_CREATand.Dv O_EXCLwere specified and the file exists..It Bq Er EOPNOTSUPPAn attempt was made to open a socket (not currently implemented)..El.Sh SEE ALSO.Xr chmod 2 ,.Xr close 2 ,.Xr dup 2 ,.Xr getdtablesize 2 ,.Xr lseek 2 ,.Xr read 2 ,.Xr write 2 ,.Xr umask 2.Sh HISTORYAn.Nmfunction call appeared in Version 6 AT&T UNIX.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -