C :接收Sigkill时如何关闭TCP套接字(服务器)

C++ : how to close a tcp socket (server) when receiving SIGKILL

本文关键字:套接字 TCP 服务器 何关闭 接收 Sigkill      更新时间:2023-10-16

如何在死亡之前关闭插座?我在Linux上有一个创建TCP服务器的服务。有时我必须重新启动它,我希望插座真的关闭。目前它挂了。我也知道Sigkill无法处理。谁能指向正确的方向?

插座将关闭 - 操作系统将自动执行此操作,请参阅:使用so_reuseaddr-以前打开插座会发生什么?

而不是试图处理不起作用的Sigkill,而是在开始时解决问题:

使用SO_REUSEADDR套接字选项,该选项允许您立即重复使用端口。

您在Sigkill上做不到任何事情。您应该尝试处理sigterm和/或sigint以终止您的服务和关闭插座。

除非

  1. 应用程序忽略Sigterm和Sigint
  2. 系统确实需要立即终止应用程序

当您想重新启动服务时,应该发送Sigterm或Sigint而不是Sigkill。