summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/open.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/open.2
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/open.2')
-rw-r--r--static/netbsd/man2/open.2558
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 .