diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/open.2 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/open.2')
| -rw-r--r-- | static/netbsd/man2/open.2 | 558 |
1 files changed, 558 insertions, 0 deletions
diff --git a/static/netbsd/man2/open.2 b/static/netbsd/man2/open.2 new file mode 100644 index 00000000..0b61208a --- /dev/null +++ b/static/netbsd/man2/open.2 @@ -0,0 +1,558 @@ +.\" $NetBSD: open.2,v 1.67 2025/07/17 17:16:07 kre Exp $ +.\" +.\" 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. 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 July 8, 2025 +.Dt OPEN 2 +.Os +.Sh NAME +.Nm open , +.Nm openat +.Nd open or create a file for reading, writing or executing +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In fcntl.h +.Ft int +.Fn open "const char *path" "int flags" "..." +.Ft int +.Fn openat "int fd" "const char *path" "int flags" "..." +.Sh DESCRIPTION +The file name specified by +.Fa path +is opened +for either execution or reading and/or writing as specified by the +argument +.Fa flags +and the file descriptor returned to the calling process. +The +.Fa flags +argument may indicate the file is to be +created if it does not exist (by specifying the +.Dv O_CREAT +flag). +In this case +.Fn open +and +.Fn openat +require an additional argument +.Fa "mode_t mode" , +and the file is created with mode +.Fa mode +as described in +.Xr chmod 2 +and modified by the process' umask value (see +.Xr umask 2 ) . +.Pp +The +.Fn openat +function is equivalent to the +.Fn open +function except in the case where the +.Fa path +is relative. +In that case, it is looked up from a directory whose file +descriptor was passed as +.Fa fd . +.\" Search permission is required on this directory. +.\" (These alternatives await a decision about the semantics of O_SEARCH) +Search permission is required on this directory +except if +.Fa fd +was opened with the +.Dv O_SEARCH +flag. +.\" - or - +.\" This file descriptor must have been opened with the +.\" .Dv O_SEARCH +.\" flag. +.Fa fd +can be set to +.Dv AT_FDCWD +in order to specify the current directory. +.Pp +The +.Fa flags +are specified by +.Em or Ns 'ing +the values listed below. +Applications must specify exactly one of these four values +(file access methods): +.Bl -tag -offset indent -width O_DIRECTORY +.It Dv O_RDONLY +Open for reading only. +.It Dv O_WRONLY +Open for writing only. +.It Dv O_EXEC +Open for execute only. +.It Dv O_RDWR +Open for reading and writing. +.El +.Pp +Any combination of the following may be used as well: +.Bl -tag -offset indent -width O_DIRECTORY +.It Dv O_NONBLOCK +Do not block on open or for data to become available. +.It Dv O_APPEND +Append to the file on each write. +.It Dv O_CREAT +Create the file if it does not exist. +The third argument of type +.Ft mode_t +is used to compute the mode bits of the file as described in +.Xr chmod 2 +and modified by the process' umask value (see +.Xr umask 2 ) . +.It Dv O_TRUNC +Truncate size to 0. +.It Dv O_EXCL +Error if +.Dv O_CREAT +and the file already exists. +.It Dv O_SHLOCK +Atomically obtain a shared lock. +.It Dv O_EXLOCK +Atomically obtain an exclusive lock. +.It Dv O_NOFOLLOW +If last path element is a symlink, don't follow it. +This option is provided for compatibility with other operating +systems, but its security value is questionable. +.It Dv O_CLOEXEC +Set the +.Xr close 2 +on +.Xr exec 3 +flag. +.It Dv O_CLOFORK +Set the +.Xr close 2 +on +.Xr fork 2 +flag. +.It Dv O_NOSIGPIPE +Return +.Er EPIPE +instead of raising +.Dv SIGPIPE . +.It Dv O_DSYNC +If set, write operations will be performed according to synchronized +I/O data integrity completion: +each write will wait for the file data to be committed to stable +storage. +.It Dv O_SYNC +If set, write operations will be performed according to synchronized +I/O file integrity completion: +each write will wait for both the file data and file status to be +committed to stable storage. +.It Dv O_RSYNC +If set, read operations will complete at the same level of +integrity which is in effect for write operations: +if specified together with +.Dv O_SYNC , +each read will wait for the file status to be committed to stable +storage. +.Pp +Combining +.Dv O_RSYNC +with +.Dv O_DSYNC +only, or specifying it without any other synchronized I/O integrity +completion flag set, has no further effect. +.It Dv O_ALT_IO +Alternate I/O semantics will be used for read and write operations +on the file descriptor. +Alternate semantics are defined by the underlying layers and will not +have any alternate effect in most cases. +.It Dv O_NOCTTY +If the file is a terminal device, the opened device is not +made the controlling terminal for the session. +This flag has no effect on +.Nx , +since the system defaults to the abovementioned behaviour. +The flag is present only for standards conformance. +.It Dv O_DIRECT +If set on a regular file, data I/O operations will not buffer the data +being transferred in the kernel's cache, but rather transfer the data +directly between user memory and the underlying device driver if possible. +This flag is advisory; the request may be performed in the normal +buffered fashion if certain conditions are not met, e.g. if the request +is not sufficiently aligned or if the file is mapped. +.Pp +To meet the alignment requirements for direct I/O, the file offset, +the length of the I/O and the address of the buffer in memory must all +be multiples of +.Dv DEV_BSIZE +(512 bytes). +If the I/O request is made +using an interface that supports scatter/gather via struct iovec, each +element of the request must meet the above alignment constraints. +.It Dv O_DIRECTORY +Fail if the file is not a directory. +.It Dv O_REGULAR +Fail if the path does not refer to a regular file. +.It Dv O_ASYNC +Enable the +.Dv SIGIO +signal to be sent to the process group +when I/O is possible, e.g., +upon availability of data to be read. +.Pp +Note: This is broken in +.Fn open ; +it must be set explicitly with the +.Dv F_SETFL +command to +.Xr fcntl 2 . +.\" (This block awaits a decision about the semantics of O_SEARCH) +.It Dv O_SEARCH +If opening a directory, search permission checks will not be performed on +subsequent usage of the file descriptor for looking up relative paths by +.Xr faccessat 2 , +.Xr fchmodat 2 , +.Xr fchownat 2 , +.Xr fstatat 2 , +.Xr linkat 2 , +.Xr mkdirat 2 , +.Xr mkfifoat 2 , +.Xr mknodat 2 , +.Xr openat 2 , +.Xr readlinkat 2 , +.Xr symlinkat 2 , +.Xr unlinkat 2 , +and +.Xr utimensat 2 . +.El +.Pp +Opening a file with +.Dv O_APPEND +set causes each write on the file +to be appended to the end. +If +.Dv O_TRUNC +is specified and the +file exists, the file is truncated to zero length. +.Pp +If +.Dv O_EXCL +is set with +.Dv O_CREAT +and the file already +exists, +.Fn open +returns an error. +This may be used to implement a simple exclusive access locking mechanism. +If +.Dv O_EXCL +is set and the last component of the pathname is +a symbolic link, +.Fn open +will fail even if the symbolic +link points to a non-existent name. +.Pp +If the +.Dv O_NONBLOCK +flag is specified, do not wait for the device or file to be ready or +available. +If the +.Fn open +call would result +in the process being blocked for some reason (e.g., waiting for +carrier on a dialup line), +.Fn open +returns immediately. +This flag also has the effect of making all subsequent I/O on the open file non-blocking. +.Pp +When opening a file, a lock with +.Xr flock 2 +semantics can be obtained by setting +.Dv O_SHLOCK +for a shared lock, or +.Dv O_EXLOCK +for an exclusive lock. +If creating a file with +.Dv O_CREAT , +the request for the lock will never fail +(provided that the underlying file system supports locking). +.Pp +If +.Fn open +is successful, the file pointer used to mark the current position within +the file is set to the beginning of the file. +.Pp +When a new file is created it is given the group of the directory +which contains it. +.Pp +Unless inhibited by the +.Dv O_CLOEXEC +flag, +the new descriptor is set to remain open across +.Xr execve 2 +system calls; +and similarly for +.Xr fork 2 +calls with +.Dv O_CLOFORK ; +see +.Xr close 2 +and +.Xr fcntl 2 . +.Pp +The system imposes a limit on the number of file descriptors +open simultaneously by one process. +Calling +.Xr getdtablesize 3 +returns the current system limit. +.Sh RETURN VALUES +If successful, +.Fn open +and +.Fn openat +returns a non-negative integer, termed a file descriptor. +Otherwise, a value of \-1 is returned and +.Va errno +is set to indicate the error. +.Sh ERRORS +The named file is opened unless: +.Bl -tag -width Er +.It Bq Er EACCES +Search permission is denied for a component of the path prefix, +the required permissions (for reading and/or writing) +are denied for the given flags, or +.Dv O_CREAT +is specified, +the file does not exist, +and the directory in which it is to be created +does not permit writing. +.It Bq Er EDQUOT +.Dv 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 the +user's quota of disk blocks on the file system +containing the directory has been exhausted; or +.Dv 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. +.It Bq Er EEXIST +.Dv O_CREAT +and +.Dv O_EXCL +were specified and the file exists. +.It Bq Er EFAULT +.Fa path +points outside the process's allocated address space. +.It Bq Er EFTYPE +.Dv O_NOFOLLOW +was specified, but the last path component is a symlink. +.Em Note : +.St -p1003.1-2008 +specifies returning +.Bq Er ELOOP +for this case. +.It Bq Er EFTYPE +.Dv O_REGULAR +is specified and the last path component is not a regular file. +.It Bq Er EINTR +The +.Fn open +operation was interrupted by a signal. +.It Bq Er EIO +An I/O error occurred while making the directory entry or +allocating the inode for +.Dv O_CREAT . +.It Bq Er EISDIR +The named file is a directory, and the arguments specify +it is to be opened for writing. +.It Bq Er ELOOP +Too many symbolic links were encountered in translating the pathname. +.It Bq Er EMFILE +The process has already reached its limit for open file descriptors. +.It Bq Er ENAMETOOLONG +A component of a pathname exceeded +.Brq Dv NAME_MAX +characters, or an entire path name exceeded +.Brq Dv PATH_MAX +characters. +.It Bq Er ENFILE +The system file table is full. +.It Bq Er ENOENT +.Dv O_CREAT +is not set and the named file does not exist, or +a component of the path name that must exist does not exist. +.It Bq Er ENOSPC +.Dv 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; or +.Dv 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. +.It Bq Er ENOTDIR +A component of the path prefix is not a directory; or +.Dv O_DIRECTORY +is specified and the last path component is not a directory. +.It Bq Er ENXIO +The named file is a character special or block +special file, and the device associated with this special file +does not exist, or the named file is a FIFO, +.Dv O_NONBLOCK +and +.Dv O_WRONLY +is set and no process has the file open for reading. +.It Bq Er EOPNOTSUPP +.Dv O_SHLOCK +or +.Dv O_EXLOCK +is specified but the underlying file system does not support locking; or +an attempt was made to open a socket (not currently implemented). +.It Bq Er EPERM +The file's flags (see +.Xr chflags 2 ) +don't allow the file to be opened. +.It Bq Er EROFS +The named file resides on a read-only file system, +and the file is to be modified. +.It Bq Er ETXTBSY +The file is a pure procedure (shared text) file that is being +executed and the +.Fn open +call requests write access. +.El +.Pp +In addition, +.Fn openat +will fail if: +.Bl -tag -width Er +.It Bq Er EBADF +.Fa path +does not specify an absolute path and +.Fa fd +is neither +.Dv AT_FDCWD +nor a valid file descriptor open for reading or searching. +.It Bq Er EINVAL +An attempt was made to open a descriptor with an illegal combination +of +.Dv O_RDONLY , +.Dv O_WRONLY , +.Dv O_RDWR , +and +.Dv O_EXEC . +.It Bq Er ENOTDIR +.Fa path +is not an absolute path and +.Fa fd +is a file descriptor associated with a non-directory file. +.El +.Sh SEE ALSO +.Xr chmod 2 , +.Xr close 2 , +.Xr dup 2 , +.Xr faccessat 2 , +.Xr fchmodat 2 , +.Xr fchownat 2 , +.Xr fcntl 2 , +.Xr fstatat 2 , +.Xr linkat 2 , +.Xr lseek 2 , +.Xr mkdirat 2 , +.Xr mkfifoat 2 , +.Xr mknodat 2 , +.Xr read 2 , +.Xr readlinkat 2 , +.Xr symlinkat 2 , +.Xr umask 2 , +.Xr unlinkat 2 , +.Xr utimensat 2 , +.Xr write 2 , +.Xr getdtablesize 3 +.Sh STANDARDS +The +.Fn open +function conforms to +.St -p1003.1-90 . +.Fn openat +conforms to +.St -p1003.1-2008 . +.Pp +The +.Fa flags +values +.Dv O_DSYNC , +.Dv O_SYNC +and +.Dv O_RSYNC +are extensions defined in +.St -p1003.1b-93 . +.Pp +.Dv O_SEARCH +is defined in +.St -p1003.1-2008 . +.Pp +.Dv O_CLOFORK +conforms to +.St -p1003.1-2024 . +.Pp +The +.Dv O_SHLOCK +and +.Dv O_EXLOCK +flags are non-standard extensions and should not be used if portability +is of concern. +.Pp +.Sh HISTORY +An +.Fn open +function call appeared in +.At v1 . +The +.Dv O_CLOFORK +implementation first appeared in +.Fx 15.0 , +.Dx 6.5 +and +.Nx 11.0 . +.Sh BUGS +.Dv O_ASYNC +doesn't actually work as advertised with +.Nm ; +you must set +.Dv O_ASYNC +explicitly with the +.Dv F_SETFL +command to +.Xr fcntl 2 . |
