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/close.2 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/close.2')
| -rw-r--r-- | static/netbsd/man2/close.2 | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/static/netbsd/man2/close.2 b/static/netbsd/man2/close.2 new file mode 100644 index 00000000..de6daec7 --- /dev/null +++ b/static/netbsd/man2/close.2 @@ -0,0 +1,163 @@ +.\" $NetBSD: close.2,v 1.19 2024/12/21 18:56:28 riastradh Exp $ +.\" +.\" Copyright (c) 1980, 1991, 1993, 1994 +.\" 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. +.\" +.\" @(#)close.2 8.2 (Berkeley) 4/19/94 +.\" +.Dd September 1, 2019 +.Dt CLOSE 2 +.Os +.Sh NAME +.Nm close +.Nd delete a descriptor +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In unistd.h +.Ft int +.Fn close "int d" +.Sh DESCRIPTION +The +.Fn close +system call deletes a descriptor from the per-process object +reference table. +If this is the last reference to the underlying object, the +object will be deactivated. +For example, on the last close of a file the current +.Em seek +pointer associated with the file is lost; on the last close of a +.Xr socket 2 +associated naming information and queued data are discarded; on +the last close of a file holding an advisory lock the lock is +released (see +.Xr flock 2 ) . +.Pp +When a process exits, all associated descriptors are freed, but +since there is a limit on active descriptors per processes, the +.Fn close +system call +is useful when a large quantity of file descriptors are being handled. +.Pp +When a process calls +.Xr fork 2 , +all descriptors for the new child process reference the same +objects as they did in the parent before the +.Fn fork . +If a new process is then to be run using +.Xr execve 2 , +the process would normally inherit these descriptors. +Most of the descriptors can be rearranged with +.Xr dup2 2 +or deleted with +.Fn close +before the +.Fn execve +is attempted, but if some of these descriptors will still be needed if the +.Fn execve +fails, it is necessary to arrange for them to be closed only if the +.Fn execve +succeeds. +For this reason, the system call +.Bl -item -offset indent +.It +.Fn fcntl d F_SETFD 1 ; +.El +.Pp +is provided, +which arranges that a descriptor +.Dq Fa d +will be closed after a successful +.Fn execve ; +the system call +.Bl -item -offset indent +.It +.Fn fcntl d F_SETFD 0 ; +.El +.Pp +restores the default, which is to not close descriptor +.Dq Fa d . +.Sh RETURN VALUES +Upon successful completion, a value of 0 is returned. +Otherwise, a value of \-1 is returned and +.Va errno +is set to indicate the error. +.Pp +In either case, if +.Fa d +was an active descriptor, it is no longer active. +That is, +.Fn close +always closes the file descriptor, and, if it was the last reference to +the underlying object, frees the associated resources \(em even if some +underlying I/O fails or it is interrupted by a signal. +.Pp +Callers must not retry failed +.Fn close , +even on +.Er EINTR . +Retrying may inadvertently close a descriptor that was created by +another thread concurrently after the first call to +.Fn close +failed. +.Sh ERRORS +.Fn close +will fail if: +.Bl -tag -width Er +.It Bq Er EBADF +.Fa d +is not an active descriptor. +.It Bq Er EINTR +An interrupt was received. +.El +.Sh SEE ALSO +.Xr accept 2 , +.Xr execve 2 , +.Xr fcntl 2 , +.Xr flock 2 , +.Xr open 2 , +.Xr pipe 2 , +.Xr socket 2 , +.Xr socketpair 2 +.Sh STANDARDS +The +.Fn close +function conforms to +.St -p1003.1-90 . +.Pp +The finality of +.Fn close , +even on error, is not specified by POSIX, but most operating systems, +including +.Fx , +.Ox , +Linux, and Solaris, implement the same semantics. +.Sh HISTORY +The +.Fn close +function appeared in +.At v1 . |
