On Wed, Dec 09, 2020 at 09:50:38AM +0100, Michael Kerrisk (man-pages) wrote: > Hello Stephen > > Thank you for writing this page! Some comments/questions below. > > On Tue, 8 Dec 2020 at 22:51, Stephen Kitt <steve@xxxxxxx> wrote: > > > > This documents close_range(2) based on information in > > 278a5fbaed89dacd04e9d052f4594ffd0e0585de and > > 60997c3d45d9a67daf01c56d805ae4fec37e0bd8. > > (Thanks for noting these commit IDs.) > > > Signed-off-by: Stephen Kitt <steve@xxxxxxx> > > --- > > 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 <steve@xxxxxxx> > > +.\" > > +.\" %%%LICENSE_START(VERBATIM) > > +.\" 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. > > +.\" %%%LICENSE_END > > +.\" > > +.TH CLOSE_RANGE 2 2020-12-08 "Linux" "Linux Programmer's Manual" > > +.SH NAME > > +close_range \- close all file descriptors in a given range > > +.SH SYNOPSIS > > +.nf > > +.B #include <linux/close_range.h> > > +.PP > > +.BI "int close_range(int " first ", int " last ", unsigned int " flags ); > > +.fi > > +.SH DESCRIPTION > > +The > > +.BR close_range () > > +system call closes all open file descriptors from > > +.I first > > +to > > +.IR last > > +(included). > > +.PP > > +Errors closing a given file descriptor are currently ignored. > > +.PP > > +.I flags > > +can be set to > > +.B CLOSE_RANGE_UNSHARE > > +to unshare the range of file descriptors from any other processes, > > +.I instead > > +of closing them. > > Really "instead of closing them"? I had supposed that rather that this > should be "before closing them". That's also how the kernel code reads > to me, from a quick glance. It's also mentioned in the commit message. Basically setting CLOSE_RANGE_UNSHARE is equivalent to: unshare(CLONE_FILES); close_range(<start>, <end>); Christian