36 #if defined __SUNPRO_C || defined __DECC || defined __HP_cc
37 # pragma ident "@(#)$Header: /cvsroot/wikipedia/willow/src/bin/willow/daemon.c,v 1.1 2005/05/02 19:15:21 kateturner Exp $"
38 # pragma ident "$NetBSD: daemon.c,v 1.9 2003/08/07 16:42:46 agc Exp $"
44 #include <sys/types.h>
49 #include <sys/select.h>
51 #include <drizzled/daemon.h>
56 int parent_pipe_fds[2];
61 static void sigchld_handler(
int sig)
73 void daemon_is_ready()
77 while ((wbytes= write(parent_pipe_fds[1],
"\0",
sizeof(
"\0"))) == 0)
85 if (close(parent_pipe_fds[1]))
91 if ((fd = open(
"/dev/null", O_RDWR, 0)) != -1)
93 if(dup2(fd, STDIN_FILENO) < 0)
99 if(dup2(fd, STDOUT_FILENO) < 0)
101 perror(
"dup2 stdout");
105 if(dup2(fd, STDERR_FILENO) < 0)
107 perror(
"dup2 stderr");
111 if (fd > STDERR_FILENO)
126 if (pipe(parent_pipe_fds))
149 signal(SIGCHLD, sigchld_handler);
151 if (close(parent_pipe_fds[1]))
157 if ((rbytes= read(parent_pipe_fds[0],ready_byte,
sizeof(ready_byte))) < 1)
167 if (close(parent_pipe_fds[0]))
178 if (close(parent_pipe_fds[0]))
TODO: Rename this file - func.h is stupid.