Clean up a little more carefully around fork of pgstat subprocess.
authorTom Lane
Mon, 1 Oct 2001 16:48:37 +0000 (16:48 +0000)
committerTom Lane
Mon, 1 Oct 2001 16:48:37 +0000 (16:48 +0000)
Partial support for BEOS (not sure whether second fork of grandchild
process needs these extra calls or not; someone who has BEOS will need
to test it).

src/backend/postmaster/pgstat.c

index 6c8ed373a873053705e31c51f9fe85690c4f5984..fb6a61b647672354ddca5b3c3ab0e1e6a106ab00 100644 (file)
@@ -16,7 +16,7 @@
  *
  * Copyright (c) 2001, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.8 2001/10/01 05:36:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.9 2001/10/01 16:48:37 tgl Exp $
  * ----------
  */
 #include "postgres.h"
@@ -273,9 +273,22 @@ pgstat_start(int real_argc, char *real_argv[])
    /*
     * Then fork off the collector.  Remember its PID for pgstat_ispgstat.
     */
+
+   fflush(stdout);
+   fflush(stderr);
+
+#ifdef __BEOS__
+   /* Specific beos actions before backend startup */
+   beos_before_backend_startup();
+#endif
+
    switch ((pgStatPid = (int)fork()))
    {
        case -1:
+#ifdef __BEOS__
+           /* Specific beos actions */
+           beos_backend_startup_failed();
+#endif
            perror("PGSTAT: fork(2)");
            pgStatRunning = 0;
            return -1;
@@ -289,6 +302,18 @@ pgstat_start(int real_argc, char *real_argv[])
    }
 
    /* in postmaster child ... */
+
+#ifdef __BEOS__
+   /* Specific beos actions after backend startup */
+   beos_backend_startup();
+#endif
+
+   IsUnderPostmaster = true;   /* we are a postmaster subprocess now */
+
+   /* Lose the postmaster's on-exit routines */
+   on_exit_reset();
+
+   /* Close the postmaster's sockets, except for pgstat link */
    ClosePostmasterPorts(false);
 
    pgstat_main(real_argc, real_argv);