Remove external PID file on postmaster exit

This commit is contained in:
Peter Eisentraut 2012-08-20 23:47:11 -04:00
parent 029722ac8e
commit ffdd5a0ee3
1 changed files with 14 additions and 1 deletions

View File

@ -329,6 +329,7 @@ static DNSServiceRef bonjour_sdref = NULL;
/*
* postmaster.c - function prototypes
*/
static void unlink_external_pid_file(int status, Datum arg);
static void getInstallationPaths(const char *argv0);
static void checkDataDir(void);
static Port *ConnCreate(int serverFd);
@ -1071,7 +1072,6 @@ PostmasterMain(int argc, char *argv[])
{
fprintf(fpidfile, "%d\n", MyProcPid);
fclose(fpidfile);
/* Should we remove the pid file on postmaster exit? */
/* Make PID file world readable */
if (chmod(external_pid_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) != 0)
@ -1081,6 +1081,8 @@ PostmasterMain(int argc, char *argv[])
else
write_stderr("%s: could not write external PID file \"%s\": %s\n",
progname, external_pid_file, strerror(errno));
on_proc_exit(unlink_external_pid_file, 0);
}
/*
@ -1182,6 +1184,17 @@ PostmasterMain(int argc, char *argv[])
}
/*
* on_proc_exit callback to delete external_pid_file
*/
static void
unlink_external_pid_file(int status, Datum arg)
{
if (external_pid_file)
unlink(external_pid_file);
}
/*
* Compute and check the directory paths to files that are part of the
* installation (as deduced from the postgres executable's own location)