C 访问postgres共享内存
我正在CentOS 5和postgresql 9.2上构建自己的C应用程序 我想做的是使用C 访问postgres共享内存,c,linux,postgresql,C,Linux,Postgresql,我正在CentOS 5和postgresql 9.2上构建自己的C应用程序 我想做的是使用shmat函数访问共享内存区域,并获取pg_stat_activity的详细信息。我不会使用数据库连接,而是直接访问内存 虽然我已经安装了gdb和postgresql的源代码编译,但我不知道从哪一点开始 如果您有任何建议,我们将不胜感激。首先,我同意Jonathan Leffer的观点-当您通过SPI访问表(或视图)时,使用查询语句-它简单、安全、快速,并且不消耗额外的资源 如果您不想使用它,请查看pg_s
shmat
函数访问共享内存区域,并获取pg_stat_activity
的详细信息。我不会使用数据库连接,而是直接访问内存
虽然我已经安装了gdb和postgresql的源代码编译,但我不知道从哪一点开始
如果您有任何建议,我们将不胜感激。首先,我同意Jonathan Leffer的观点-当您通过SPI访问表(或视图)时,使用查询语句-它简单、安全、快速,并且不消耗额外的资源
如果您不想使用它,请查看pg_stat_活动视图定义。它基于调用pg_stat_get_activity函数。这个功能,可以很好的开始。这个函数看起来并不太复杂-几乎所有代码都是SRF(设置返回函数-函数返回表)的实现。首先,我同意Jonathan Leffer的观点-当您访问表(或视图)时,使用查询语句-通过SPI-它简单、安全、快速,并且不消耗额外的资源
如果您不想使用它,请查看pg_stat_活动视图定义。它基于调用pg_stat_get_activity函数。这个功能,可以很好的开始。这个函数看起来并不太复杂-几乎所有代码都是SRF(设置返回函数-函数返回表)的实现。首先,我同意Jonathan Leffer的观点-当您访问表(或视图)时,使用查询语句-通过SPI-它简单、安全、快速,并且不消耗额外的资源
如果您不想使用它,请查看pg_stat_活动视图定义。它基于调用pg_stat_get_activity函数。这个功能,可以很好的开始。这个函数看起来并不太复杂-几乎所有代码都是SRF(设置返回函数-函数返回表)的实现。首先,我同意Jonathan Leffer的观点-当您访问表(或视图)时,使用查询语句-通过SPI-它简单、安全、快速,并且不消耗额外的资源
如果您不想使用它,请查看pg_stat_活动视图定义。它基于调用pg_stat_get_activity函数。这个功能,可以很好的开始。这个函数不像看上去那么复杂-几乎所有代码都是SRF(设置返回函数-函数返回表)的实现。第一条建议:不要这样做。除非您完全了解PostgreSQL代码如何处理共享内存,它的定义来自何处,以及如何在不干扰正在运行的DBMS的情况下处理它,否则不要这样做。如果您对此了解得足够多,那么您可能不需要问这个问题——您知道如何设置连接到共享内存的权限。不要这样做。即使你成功了,最终产品也会非常类似于精简版的邮政局长。另一种方法是安装一个信号处理程序,让CHECK_INTERRUPT(sp?)将内容转储到一个命名文件或命名管道中。感谢Jonathan Leffler坦率地说,哈哈。第一个建议:不要这样做。除非您完全了解PostgreSQL代码如何处理共享内存,它的定义来自何处,以及如何在不干扰正在运行的DBMS的情况下处理它,否则不要这样做。如果您对此了解得足够多,那么您可能不需要问这个问题——您知道如何设置连接到共享内存的权限。不要这样做。即使你成功了,最终产品也会非常类似于精简版的邮政局长。另一种方法是安装一个信号处理程序,让CHECK_INTERRUPT(sp?)将内容转储到一个命名文件或命名管道中。感谢Jonathan Leffler坦率地说,哈哈。第一个建议:不要这样做。除非您完全了解PostgreSQL代码如何处理共享内存,它的定义来自何处,以及如何在不干扰正在运行的DBMS的情况下处理它,否则不要这样做。如果您对此了解得足够多,那么您可能不需要问这个问题——您知道如何设置连接到共享内存的权限。不要这样做。即使你成功了,最终产品也会非常类似于精简版的邮政局长。另一种方法是安装一个信号处理程序,让CHECK_INTERRUPT(sp?)将内容转储到一个命名文件或命名管道中。感谢Jonathan Leffler坦率地说,哈哈。第一个建议:不要这样做。除非您完全了解PostgreSQL代码如何处理共享内存,它的定义来自何处,以及如何在不干扰正在运行的DBMS的情况下处理它,否则不要这样做。如果您对此了解得足够多,那么您可能不需要问这个问题——您知道如何设置连接到共享内存的权限。不要这样做。即使你成功了,最终产品也会非常类似于精简版的邮政局长。另一种方法是安装一个信号处理程序,让CHECK_INTERRUPT(sp?)将内容转储到一个命名的文件或命名的管道中。谢谢乔纳森·莱夫勒坦率的讲话哈哈。