summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2009-06-26 22:12:20 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2009-06-26 22:12:20 +0000
commit8ff6e4897d3271d688c3f491e2c1baf97f088545 (patch)
tree846a54133f18205de441510d21853a28621ff76b /usr.bin
parent0751fea95578c17539d152415659b029f67bc3b7 (diff)
After logging (if enabled) is switched to file, there is no reason to keep
stdin/stdout/stderr active, so dup them to /dev/null.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/tmux/server.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/usr.bin/tmux/server.c b/usr.bin/tmux/server.c
index 54b0e5ac803..a1f908b7ac1 100644
--- a/usr.bin/tmux/server.c
+++ b/usr.bin/tmux/server.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server.c,v 1.4 2009/06/25 22:09:20 nicm Exp $ */
+/* $OpenBSD: server.c,v 1.5 2009/06/26 22:12:19 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -25,6 +25,7 @@
#include <errno.h>
#include <fcntl.h>
+#include <paths.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
@@ -131,7 +132,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;
char rpathbuf[MAXPATHLEN];
@@ -176,6 +177,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);