postgresql bgworker SIGTERM 处理程序调用了两次

postgresql bgworker SIGTERM handler called twice

我在 Mac.

上使用 postgresql 10.1

我在使用 SIGTERM 终止后台工作程序时遇到了问题。 在我的项目中,我正在使用 RegisterBackgroundWorker(). 创建一个新的后台工作者 我包含了一个 test_function 作为 SIGTERM 的信号处理程序。 没有定义其他信号处理程序。

pqsignal(SIGTERM, test_function)

当我发出 pkill -15 postgres 时,我看到处理程序被调用了两次。为什么会这样?我错过了什么吗??

您应该使用 postmaster 的 PID 而不是 postgres,因为这将向所有具有该名称的进程发出 SIGTERM,其中包括您的 BackgroundWorker

kill postmaster-pid 

会的。