shutdown(2) - Linux 手册页

名称

shutdown - 关闭全双工连接的一部分

概要

#include <sys/socket.h>

int shutdown(int sockfd, int how);

描述

shutdown() 调用将导致与 sockfd 关联的套接字上的全双工连接的全部或部分关闭。如果 howSHUT_RD,则禁止进一步的接收。如果 howSHUT_WR,则禁止进一步的发送。如果 howSHUT_RDWR,则禁止进一步的接收和发送。

返回值

成功时返回零。出错时返回 -1,并相应地设置 errno

错误

EBADF
sockfd 不是有效的描述符。
EINVAL
how 中指定了一个无效的值(但请参阅 BUGS)。
ENOTCONN
指定的套接字未连接。
ENOTSOCK
sockfd 是一个文件,而不是一个套接字。

符合

POSIX.1-2001, 4.4BSD (shutdown() 函数调用首次出现在 4.2BSD 中)。

说明

常量 SHUT_RDSHUT_WRSHUT_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)