diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
new file mode 100644
index 07836e7..7dc170e
*** a/doc/src/sgml/ref/pg_ctl-ref.sgml
--- b/doc/src/sgml/ref/pg_ctl-ref.sgml
*************** PostgreSQL documentation
*** 205,211 ****
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.
    </para>
  
    <para>
--- 205,212 ----
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.  If the server is not running, the process returns an
!    exit status of 3.
    </para>
  
    <para>
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
new file mode 100644
index c9007ed..8e9d2ce
*** a/src/bin/pg_ctl/pg_ctl.c
--- b/src/bin/pg_ctl/pg_ctl.c
*************** do_status(void)
*** 1186,1192 ****
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	exit(1);
  }
  
  
--- 1188,1198 ----
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	/*
! 	 * 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);
  }
  
  
