当服务器收到终止信号时,它会退出 select() 正在监视集合 (fd_set) 中的 fd 的循环。
是否有必要查看 fds 并调用 shutdown(fd, SHUT_RDWR) 是否还有它们在集合中?或者我应该调用 close(fd) 吗?
无需在
shutdown()
之前调用close()
。当您关闭套接字时,它会在两个方向上自动关闭。
如果出于某种原因需要保持套接字打开,通常只需要使用
shutdown()
。这可以在请求结束由 EOF 指示的协议中完成;您调用 shutdown(fd, SHUT_WR)
发送 EOF,然后读取响应。