+ /* Don't leak fds to the agent */
+ close_all_fds(NULL, 0);
+
+ /* Detach from stdin/stdout/stderr. and reopen
+ * /dev/tty for them. This is important to ensure that
+ * when systemctl is started via popen() or a similar
+ * call that expects to read EOF we actually do
+ * generate EOF and not delay this indefinitely by
+ * because we keep an unused copy of stdin around. */
+ if ((fd = open("/dev/tty", O_RDWR)) < 0) {
+ log_error("Failed to open /dev/tty: %m");
+ _exit(EXIT_FAILURE);
+ }
+
+ close(STDIN_FILENO);
+ close(STDOUT_FILENO);
+ close(STDERR_FILENO);
+
+ dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDERR_FILENO);
+
+ if (fd > 2)
+ close(fd);
+