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

时间:2018-09-21 12:45:47

标签: c++ signals

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

1 个答案:

答案 0 :(得分:0)

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

如果您不想因为处理而阻止SIGHUP,请确保您的应用程序将MSG_NOSIGNAL传递到所有send调用中,以便它不会生成SIGHUP 。否则,您将无法确定是SIGHUP的{​​{1}}-send的原因。

由于pkill -SIGHUP my_app有多种用途,您可能希望使用另一个信号,例如SIGHUP,以指示您的应用程序重新加载配置。没有其他发送此信号。或者让您的应用程序打开一个TCP或UNIX套接字,您可以向该套接字发送命令。