Stefano, you called it correctly. While working on bug 215, as usual, I found a bunch of adjacent things to clean up. I did start by attempting the appoach you suggested for bug 215 - remembering which of the low fds were standard streams and avoiding closing them in __daemon(). It is indeed shorter, but only by 1-2 lines. Looking at possible interactions with other things, I became more and more convinced that leaving anything other than the standard streams in fds 0-2 was an accident waiting to happen. Much of the rest of the series is, for example, dealing with the possibility of --fd [012]. David Gibson (6): isolation, util: Fold close_open_files() into isolate_initial() isolation, conf: Set c->fd_tap from eary parse of --fd conf: Make conf_tap_fd() operate more like conf_mode() isolation: Move --fd descriptor to a number of our choosing main: Ensure fds 0-2 are populated passt: *Always* close pidfile_fd, not just when daemonizing conf.c | 31 +++++++++++++++++++++++-------- conf.h | 2 +- isolation.c | 32 ++++++++++++++++++++++++++++++-- isolation.h | 2 +- passt.c | 27 +++++++++++++++++---------- util.c | 52 +--------------------------------------------------- util.h | 1 - 7 files changed, 73 insertions(+), 74 deletions(-) -- 2.55.0