From 503edbdbffe5584282ad33866fe6f3b72a2c02ae Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 3 Apr 2005 00:01:51 +0000 Subject: [PATCH] Put back code mistakenly removed from copy of postmaster's daemonize routine, namely forcing stdin/stdout/stderr to point to /dev/null. Per Karl Denninger. --- contrib/pg_autovacuum/pg_autovacuum.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/contrib/pg_autovacuum/pg_autovacuum.c b/contrib/pg_autovacuum/pg_autovacuum.c index 388b731332..fdbd285f10 100644 --- a/contrib/pg_autovacuum/pg_autovacuum.c +++ b/contrib/pg_autovacuum/pg_autovacuum.c @@ -4,7 +4,7 @@ * Revisions by Christopher B. Browne, Liberty RMS * Win32 Service code added by Dave Page * - * $PostgreSQL: pgsql/contrib/pg_autovacuum/pg_autovacuum.c,v 1.29 2005/01/26 22:25:13 tgl Exp $ + * $PostgreSQL: pgsql/contrib/pg_autovacuum/pg_autovacuum.c,v 1.30 2005/04/03 00:01:51 tgl Exp $ */ #include "postgres_fe.h" @@ -18,6 +18,8 @@ #ifdef WIN32 #include #endif +#include +#include #include "pg_autovacuum.h" @@ -186,13 +188,13 @@ log_entry(const char *logentry, int level) * Function used to detach the pg_autovacuum daemon from the tty and go into * the background. * - * This code is mostly ripped directly from pm_dameonize in postmaster.c with - * unneeded code removed. + * This code is ripped directly from pmdaemonize in postmaster.c. */ #ifndef WIN32 static void daemonize(void) { + int i; pid_t pid; pid = fork(); @@ -209,7 +211,8 @@ daemonize(void) } /* GH: If there's no setsid(), we hopefully don't need silent mode. - * Until there's a better solution. */ + * Until there's a better solution. + */ #ifdef HAVE_SETSID if (setsid() < 0) { @@ -218,7 +221,11 @@ daemonize(void) _exit(1); } #endif - + i = open(NULL_DEV, O_RDWR); + dup2(i, 0); + dup2(i, 1); + dup2(i, 2); + close(i); } #endif /* WIN32 */