1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-02 11:44:50 +03:00

Have pg_ctl return an exit status of 3 if the server is not running, to

match the Linux Standard Base Core Specification 3.1.

Aaron W. Swenson
This commit is contained in:
Bruce Momjian 2011-10-13 13:01:56 -04:00
parent de1bf53a25
commit 12ff9fa771
2 changed files with 12 additions and 5 deletions

View File

@ -205,7 +205,8 @@ PostgreSQL documentation
<option>status</option> mode checks whether a server is running in <option>status</option> mode checks whether a server is running in
the specified data directory. If it is, the <acronym>PID</acronym> the specified data directory. If it is, the <acronym>PID</acronym>
and the command line options that were used to invoke it are and the command line options that were used to invoke it are
displayed. displayed. If the server is not running, the process returns an
exit status of 3.
</para> </para>
<para> <para>

View File

@ -1155,9 +1155,11 @@ do_status(void)
pgpid_t pid; pgpid_t pid;
pid = get_pgpid(); pid = get_pgpid();
if (pid != 0) /* 0 means no pid file */ /* Is there a pid file? */
if (pid != 0)
{ {
if (pid < 0) /* standalone backend */ /* standalone backend? */
if (pid < 0)
{ {
pid = -pid; pid = -pid;
if (postmaster_is_alive((pid_t) pid)) if (postmaster_is_alive((pid_t) pid))
@ -1168,7 +1170,7 @@ do_status(void)
} }
} }
else else
/* postmaster */ /* must be a postmaster */
{ {
if (postmaster_is_alive((pid_t) pid)) if (postmaster_is_alive((pid_t) pid))
{ {
@ -1186,7 +1188,11 @@ do_status(void)
} }
} }
printf(_("%s: no server running\n"), progname); printf(_("%s: no server running\n"), progname);
exit(1); /*
* The Linux Standard Base Core Specification 3.1 says this should return '3'
* http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
*/
exit(3);
} }