有没有办法关闭Unix套接字只能读或写?

mil*_*ose 3 unix sockets

有没有办法只关闭TCP套接字的"一端"来干净地指示连接的一端写完连接?(就像你在每个Unix管道教程中使用管道一样.)或者我应该使用像哨兵值这样的带内解决方案?

Eri*_*lje 5

您可以使用方法的第二个参数关闭套接字以进行读取或写入:

shutdown(sock, SHUT_RD)
shutdown(sock, SHUT_WR)
Run Code Online (Sandbox Code Playgroud)

如果服务器正在执行写操作,并执行shutdown()进行写操作,则客户端在尝试读取时(而不是阻塞并等待数据到达)应该获得文件结束.但它仍然可以写入套接字.