我有一个用c ++编写的服务,该服务正在某个端口上侦听。我想使用sudo sv hup service_name SIGHUP信号重新加载配置文件。但是该服务将重新启动。仅当套接字关闭或阻塞时,服务才会重新启动。 SIGHUP信号会阻塞监听端口吗?
答案 0 :(得分:0)
SIGHUP
尝试写入另一端已关闭的套接字或管道时,将发送给您的进程。这就是为什么人们通常会在网络应用程序中阻止SIGHUP
信号的原因。 (此外,当会话负责人进程终止时,它会向其进程组中的所有子进程发送SIGHUP
。)
如果您不想因为处理而阻止SIGHUP
,请确保您的应用程序将MSG_NOSIGNAL
传递到所有send
调用中,以便它不会生成SIGHUP
。否则,您将无法确定是SIGHUP
的{{1}}-send
的原因。
由于pkill -SIGHUP my_app
有多种用途,您可能希望使用另一个信号,例如SIGHUP
,以指示您的应用程序重新加载配置。没有其他发送此信号。或者让您的应用程序打开一个TCP或UNIX套接字,您可以向该套接字发送命令。