From e49fe14705f78ba5a865ca4efd6ee53c78eeb253 Mon Sep 17 00:00:00 2001 From: Felix Janda Date: Sat, 10 Aug 2013 20:18:18 +0200 Subject: Add daemonize function to lib for klogd and syslogd --- lib/pending.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/pending.c') diff --git a/lib/pending.c b/lib/pending.c index fad1c656..79b9c91c 100644 --- a/lib/pending.c +++ b/lib/pending.c @@ -102,3 +102,19 @@ char *xastrcat (char *x, char *y) { if (!x) error_exit ("xastrcat"); return x; } + +void daemonize(void) +{ + int fd = open("/dev/null", O_RDWR); + if (fd < 0) fd = xcreate("/", O_RDONLY, 0666); + + pid_t pid = fork(); + if (pid < 0) perror_exit("DAEMON: failed to fork"); + if (pid) exit(EXIT_SUCCESS); + + setsid(); + dup2(fd, 0); + dup2(fd, 1); + dup2(fd, 2); + if (fd > 2) close(fd); +} -- cgit v1.2.3