archive mirror
 help / color / mirror / Atom feed
From: Stephen Kitt <>
	Alejandro Colomar <>,
	Michael Kerrisk <>
Cc: Christian Brauner <>,, Stephen Kitt <>
Subject: [patch] close_range.2: new page documenting close_range(2)
Date: Tue,  8 Dec 2020 22:51:33 +0100	[thread overview]
Message-ID: <> (raw)

This documents close_range(2) based on information in
278a5fbaed89dacd04e9d052f4594ffd0e0585de and

Signed-off-by: Stephen Kitt <>
 man2/close_range.2 | 112 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 112 insertions(+)
 create mode 100644 man2/close_range.2

diff --git a/man2/close_range.2 b/man2/close_range.2
new file mode 100644
index 000000000..62167d9b0
--- /dev/null
+++ b/man2/close_range.2
@@ -0,0 +1,112 @@
+.\" Copyright (c) 2020 Stephen Kitt <>
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.TH CLOSE_RANGE 2 2020-12-08 "Linux" "Linux Programmer's Manual"
+close_range \- close all file descriptors in a given range
+.B #include <linux/close_range.h>
+.BI "int close_range(int " first ", int " last ", unsigned int " flags );
+.BR close_range ()
+system call closes all open file descriptors from
+.I first
+.IR last
+Errors closing a given file descriptor are currently ignored.
+.I flags
+can be set to
+to unshare the range of file descriptors from any other processes,
+.I instead
+of closing them.
+On success,
+.BR close_range ()
+return 0.
+On error, \-1 is returned and
+.I errno
+is set to indicate the cause of the error.
+.I flags
+is not valid, or
+.I first
+is greater than
+.IR last .
+The per-process limit on the number of open file descriptors has been reached
+(see the description of
+.BR getrlimit (2)).
+Insufficient kernel memory was available.
+.BR close_range ()
+first appeared in Linux 5.9.
+.BR close_range ()
+is available on Linux and FreeBSD.
+Currently, there is no glibc wrapper for this system call; call it using
+.BR syscall (2).
+.\" 278a5fbaed89dacd04e9d052f4594ffd0e0585de
+.\" 60997c3d45d9a67daf01c56d805ae4fec37e0bd8
+.SS Closing file descriptors before exec
+File descriptors can be closed safely using
+.PP +4n
+/* we don't want anything past stderr here */
+close_range(3, ~0U, CLOSE_RANGE_UNSHARE);
+.SS Closing all open file descriptors
+This is commonly implemented (on Linux) by listing open file
+descriptors in
+.B /proc/self/fd/
+and calling
+.BR close (2)
+on each one.
+.BR close_range ()
+can take care of this without requiring
+.B /proc
+and with a single system call, which provides significant performance
+.BR close (2)

base-commit: b5dae3959625f5ff378e9edf9139057d1c06bb55

             reply	other threads:[~2020-12-09  0:56 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-08 21:51 Stephen Kitt [this message]
2020-12-09  8:50 ` [patch] close_range.2: new page documenting close_range(2) Michael Kerrisk (man-pages)
2020-12-09  9:40   ` Christian Brauner
2020-12-09  9:43     ` Stephen Kitt
2020-12-09  9:47   ` Alejandro Colomar (man-pages)
2020-12-10 22:40     ` Michael Kerrisk (man-pages)
2020-12-09  9:58 ` Christian Brauner
2020-12-09 10:44   ` Alejandro Colomar (man-pages)
2020-12-09 10:56     ` Christian Brauner
2020-12-10 14:36       ` Alejandro Colomar (man-pages)
2020-12-12 12:14         ` Christian Brauner
2020-12-12 17:58           ` Alejandro Colomar (man-pages)
2020-12-18 10:12             ` Ping: " Alejandro Colomar (man-pages)
2020-12-18 10:14               ` Stephen Kitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).