关闭子例程

用途

关闭所有套接字发送和接收操作。

标准 C 库 (libc.a)

语法

#include <sys/socket.h>

int shutdown ( Socket,  How)
int Socket, How;

描述

shutdown 子例程禁用指定套接字上的所有 receivesend 操作。

必须在将 _BSD 宏设置为特定值的情况下编译包含 shutdown 子例程的所有应用程序。 可接受的值为 43 和 44。 此外,所有套接字应用程序都必须包含 BSD libbsd.a 库。

参数

描述
套接字 指定套接字的唯一名称。
方式 指定子例程关闭的类型。 使用下列值:
重大安全事件数量
禁用进一步的接收操作。
第 1 年
禁用进一步的发送操作。
2
禁用进一步的发送操作和接收操作。

返回值

成功完成后,将返回值 0。

如果 shutdown 子例程不成功,那么子例程处理程序将执行以下函数:

  • 会向调用程序返回-1的值。
  • 将指示特定错误的错误代码移动到 errno 全局变量中。 有关 errno 变量的进一步说明,请参阅 一般编程概念: 编写和调试程序中的 错误通知对象类

错误代码

如果发生以下任何错误,那么 shutdown 子例程将失败:

错误 描述
EBADF Socket 参数无效。
EINVAL How 参数无效。
ENOTCONN 未连接套接字。
ENOTSOCK Socket 参数引用文件,而不是套接字。

文件

描述
/usr/include/sys/socket.h 包含套接字定义。
/usr/include/sys/types.h 包含未签名数据类型的定义。