After logging (if enabled) is switched to file, there is no reason to keep

stdin/stdout/stderr active, so dup them to /dev/null.
pull/1/head
Nicholas Marriott 2009-06-26 22:13:57 +00:00
parent 826add53f1
commit 6ce734cec0
1 changed files with 13 additions and 1 deletions

View File

@ -131,7 +131,7 @@ server_client_index(struct client *c)
int
server_start(char *path)
{
int pair[2], srv_fd;
int pair[2], srv_fd, null_fd;
char *cause;
#ifdef HAVE_SETPROCTITLE
char rpathbuf[MAXPATHLEN];
@ -178,6 +178,18 @@ server_start(char *path)
}
logfile("server");
/*
* Close stdin/stdout/stderr. Can't let daemon() do this as they are
* needed until now to print configuration file errors.
*/
if ((null_fd = open(_PATH_DEVNULL, O_RDWR)) != -1) {
dup2(null_fd, STDIN_FILENO);
dup2(null_fd, STDOUT_FILENO);
dup2(null_fd, STDERR_FILENO);
if (null_fd > 2)
close(null_fd);
}
log_debug("server started, pid %ld", (long) getpid());
log_debug("socket path %s", socket_path);