diff options
Diffstat (limited to 'src/backend/postmaster/bgwriter.c')
-rw-r--r-- | src/backend/postmaster/bgwriter.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index f2cb3ff68de..5aa378ae70d 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.30 2006/11/21 00:49:55 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.31 2006/11/21 20:59:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -45,6 +45,7 @@ #include <signal.h> #include <time.h> +#include <unistd.h> #include "access/xlog_internal.h" #include "libpq/pqsignal.h" @@ -171,6 +172,17 @@ BackgroundWriterMain(void) am_bg_writer = true; /* + * If possible, make this process a group leader, so that the postmaster + * can signal any child processes too. (bgwriter probably never has + * any child processes, but for consistency we make all postmaster + * child processes do this.) + */ +#ifdef HAVE_SETSID + if (setsid() < 0) + elog(FATAL, "setsid() failed: %m"); +#endif + + /* * Properly accept or ignore signals the postmaster might send us * * Note: we deliberately ignore SIGTERM, because during a standard Unix |