C :接收Sigkill时如何关闭TCP套接字(服务器)
C++ : how to close a tcp socket (server) when receiving SIGKILL
如何在死亡之前关闭插座?我在Linux上有一个创建TCP服务器的服务。有时我必须重新启动它,我希望插座真的关闭。目前它挂了。我也知道Sigkill无法处理。谁能指向正确的方向?
插座将关闭 - 操作系统将自动执行此操作,请参阅:使用so_reuseaddr-以前打开插座会发生什么?
而不是试图处理不起作用的Sigkill,而是在开始时解决问题:
使用SO_REUSEADDR
套接字选项,该选项允许您立即重复使用端口。
您在Sigkill上做不到任何事情。您应该尝试处理sigterm和/或sigint以终止您的服务和关闭插座。
除非
- 应用程序忽略Sigterm和Sigint
- 系统确实需要立即终止应用程序
当您想重新启动服务时,应该发送Sigterm或Sigint而不是Sigkill。
相关文章:
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- C++ TCP 套接字 | 无法将"std::__cxx11::字符串"转换为"const
- ASIO 的 TCP 套接字::async_wait() 并在此之后关闭套接字
- Visual Studio(C++):如何使用TCP套接字发送多个值
- TCP套接字(客户端-服务器)recv()返回-1值
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- C++中TCP套接字的recv函数
- 通过 TCP 套接字发送大型 base64 字符串
- 提升 ASIO TCP 套接字 1.70 不向后兼容
- 尝试连接到 TCP 套接字 (Linux) 时连接被拒绝
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- 如何知道请求是否完全使用 TCP 套接字接收?
- Qt TCP 套接字 - 写入超过 15 个字节
- 要打开以供C++中的应用程序最佳使用的并行套接字/TCP连接数
- C++ 如何通过套接字 (TCP) 进行二进制序列化
- 套接字 TCP 服务器程序问题
- Cpp套接字-TCP传输(使用同一端口发送,然后接收)