I saw the recent announcement for "Winter 2021-2022 release" and started poking around to update my deployments.

While doing so I see I have the following commit that I had neglected to forward to the mailing list.

IIRC the use case involves signal handling, which causes prepare_to_exit() to be called in handle_signals(). Once the signal handler returns, stdin is closed. The mainline continues to refer to the now closed file descriptor, and emits errors as consequence. The process terminates, but the path to exit is unsightly.


diff --git a/src/daemontools-extras/s6-log.c b/src/daemontools-extras/s6-log.c
index 92e3886..9b91ce0 100644
--- a/src/daemontools-extras/s6-log.c
+++ b/src/daemontools-extras/s6-log.c
@@ -1010,7 +1010,11 @@ static void script_run (scriptelem_t const *script, unsigned int scriptlen, char

 static void prepare_to_exit (void)
+  int fd ;
   fd_close(0) ;
+  fd = open_read("/dev/null") ;
+  if (fd < 0) strerr_warnwu1sys("reopen stdin") ;
+  else if (fd_move(0, fd)) strerr_warnwu1sys("move stdin") ;
   flagexiting = 1 ;

Reply via email to