pg_ctl.c::test_postmaster_connection() has some fragile code that tries
to detect the server port number by looking in the pg_ctl -o string,
postgresql.conf, the PGPORT environment variable, and finally using the
default port number.
I think a simpler solution would be to look in postmaster.pid:
10231/u/pgsql/data 5432001 45481984
pg_ctl already knows the data directory. If the file is missing, the
server is not running. If the file exists, the first number on the last
line, divided by 1000, is the port number. We can then use this port
number for libpq to check for connectivity.
Comments?
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ It's impossible for everything to be true. +