shutdown(2) - Linux 手册页
名称
shutdown - 关闭全双工连接的一部分
概要
#include <sys/socket.h>
int shutdown(int sockfd, int how);
描述
shutdown() 调用将导致与
sockfd 关联的套接字上的全双工连接的全部或部分关闭。如果
how 是
SHUT_RD,则禁止进一步的接收。如果
how 是
SHUT_WR,则禁止进一步的发送。如果
how 是
SHUT_RDWR,则禁止进一步的接收和发送。
返回值
成功时返回零。出错时返回 -1,并相应地设置
errno。
错误
- EBADF
- sockfd 不是有效的描述符。
- EINVAL
- 在 how 中指定了一个无效的值(但请参阅 BUGS)。
- ENOTCONN
- 指定的套接字未连接。
- ENOTSOCK
- sockfd 是一个文件,而不是一个套接字。
符合
POSIX.1-2001, 4.4BSD (
shutdown() 函数调用首次出现在 4.2BSD 中)。
说明
常量
SHUT_RD、
SHUT_WR、
SHUT_RDWR 的值分别为 0、1、2,自 glibc-2.1.91 起定义在
<sys/socket.h> 中。
错误
目前实现中,对
how 的有效性检查是在特定域的代码中完成的,并非所有域都执行这些检查。最值得注意的是,UNIX 域套接字会简单地忽略无效值;这在未来可能会改变。
参见
connect(2),
socket(2),
socket(7)
引用自
close(2),
iv_fd_pump_pump(3),
lsof(8),
recv(2),
send(2),
socketcall(2)