libpq将通知输出到终端

时间:2012-09-19 23:37:58

标签: c postgresql libpq

我正在编写一个用C语言包装libpq的库。当我执行DROP SCHEMA IF EXISTS bob之类的查询,并且bob不存在时,libpq输出

"NOTICE:  schema "bob" does not exist, skipping"

进入我的终端,但随后成功。同样,如果我使用id serial primary key创建一个表,它会打印一个通知,表明它会自动生成一个序列。

如何停止将其打印到终端?我的库中有函数来获取这些信息,如果用户需要它,但它不应该像这样只输出到终端。

我在PQexecParams()PQconnectdb()等文档中没有看到任何内容。

2 个答案:

答案 0 :(得分:4)

请参阅手册中的libpq - notice processing。您需要提供通知处理器来替换默认处理器。

  

默认通知处理器只是:

static void
defaultNoticeProcessor(void *arg, const char *message)
{
    fprintf(stderr, "%s", message);
}

答案 1 :(得分:0)

一种选择是更改它的标准输出(和/或stderr)。