我应该在退出服务器之前在 fds 上调用 shutdown() 吗?

Should I call shutdown() on fds before exit from server?

当服务器收到终止信号时,它会退出循环,其中 select() 正在监视集合中的 fds (fd_set)。

是否有必要查看 fds 并调用 shutdown(fd, SHUT_RDWR) 是否还有它们在集合中?或者我应该调用 close(fd)?

没必要在close()之前调用shutdown()。当您关闭套接字时,它会在两个方向上自动关闭。

如果出于某种原因需要保持套接字打开,通常只需要使用 shutdown()。这可以在请求结束由 EOF 指示的协议中完成;您调用 shutdown(fd, SHUT_WR) 发送 EOF,然后读取响应。