使用 sv hup SIGHUP 信号重新加载配置时出现问题



我有一个用 c++ 编写的服务,它正在侦听某个端口。我想使用 sudo sv hup service_name SIGHUP 信号重新加载配置文件。但服务会重新启动。仅当套接字关闭或阻止时,服务才会重新启动。SIGHUP 信号是否阻塞了侦听端口?

SIGHUP尝试写入另一端已关闭的套接字或管道时,会发送到您的进程。这就是为什么人们通常在网络应用程序中阻挡SIGHUP信号的原因。(此外,当会话领导进程终止时,它会SIGHUP发送到其进程组中的所有子进程。

如果您没有阻止SIGHUP因为您想要处理它,请确保您的应用程序将MSG_NOSIGNAL传递到所有send调用中,以便它不会生成SIGHUP。否则,您将无法分辨导致该SIGHUP的原因 -pkill -SIGHUP my_appsend

由于SIGHUP有多种用途,您可能希望使用另一个信号,例如SIGUSR1,来指示应用程序重新加载配置。没有其他东西会发出这个信号。或者让应用程序打开一个 TCP 或 UNIX 套接字,您可以将命令发送到该应用程序。

相关内容

最新更新