Обсуждение: libpq and unwanted stderr output
I have some C programs which use libpq and I do not want them to write
output to the screen (unless, of course, I direct them to do so).
When I use libpq I get unwanted messaged dumped to stderr.
Example (stripped of all error-checking, etc.):
#include "/usr/include/pgsql/libpq-fe.h"
int main ()
{
PGconn *conn;
PGresult *res;
conn = PQconnectdb ("dbname=steve");
res = PQexec (conn, "create table x (a text primary key, b text)");
PQclear (res);
PQfinish (conn);
return 0;
}
With nary a printf in sight, the following is nonetheless written to
stderr:
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"x_pkey" for table "x"
These various programs include daemons, backgrounded processes and
user processes (data input and query screens). In all cases these
messages are causing problems. How do I disable this behaviour?
Cheers,
Steve
On Fri, Aug 19, 2005 at 10:16:14AM -0700, Steve Crawford wrote:
> I have some C programs which use libpq and I do not want them to write
> output to the screen (unless, of course, I direct them to do so).
> When I use libpq I get unwanted messaged dumped to stderr.
I think you want these:
extern PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn,
PQnoticeReceiver proc,
void *arg);
extern PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn,
PQnoticeProcessor proc,
void *arg);
Not sure about the difference between the two, but just supressing them
should be easy.
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.