aboutsummaryrefslogtreecommitdiff
path: root/src/daemon.c
diff options
context:
space:
mode:
authorMichal Nazarewicz <mina86@mina86.com>2009-07-22 13:43:21 +0200
committerMax Kellermann <max@duempel.org>2009-07-22 13:43:21 +0200
commitbfed1c04cc13ec01fa7bb6c250662f5dfb8c7931 (patch)
tree093babf82dd46a048db315704006d8e01d135fce /src/daemon.c
parentbdb1965b506ee97e7e8a07253e29c2f4cc3d6bf6 (diff)
daemon: daemonize_close_stdin() optimised.
Changed function to first close standard input (this may fail but we don't care) and then try to open /dev/null (this may fail but it shouldn't on Unix platforms plus we don't know what to do in such case anyways). Since standard input has the "zeroth" descriptor number next "open" will use it. Since there is no "/dev/null" on Windows (It's not even a valid path!) the second step is skipped if WIN32 is defined. As a final touch, since the function consists of merely two function calls it has been moved to header file and declared static inline. [mk: un-inline daemonize_close_stdin()]
Diffstat (limited to 'src/daemon.c')
-rw-r--r--src/daemon.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/daemon.c b/src/daemon.c
index 43d16bc9..5ae79e05 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -85,23 +85,13 @@ daemonize_kill(void)
exit(EXIT_SUCCESS);
}
-#endif
-
void
daemonize_close_stdin(void)
{
- int fd = open("/dev/null", O_RDONLY);
-
- if (fd < 0)
- close(STDIN_FILENO);
- else if (fd != STDIN_FILENO) {
- dup2(fd, STDIN_FILENO);
- close(fd);
- }
+ close(STDIN_FILENO);
+ open("/dev/null", O_RDONLY);
}
-#ifndef WIN32
-
void
daemonize_set_user(void)
{