socketpair 子例程
用途
创建一对已连接的套接字。
库
标准 C 库 (libc.a)
语法
#include <sys/socket.h>
int socketpair (Domain, Type, Protocol, SocketVector[0])
int Domain, Type, Protocol;
int SocketVector[2];
int Domain, Type, Protocol;
int SocketVector[2];
描述
Socketpair 子例程在指定域中创建指定类型的未命名对已连接套接字,并使用 (可选) 指定的协议。 两个套接字相同。
注: 仅在 AF_UNIX 协议系列中使用此子例程创建套接字。
用于引用新套接字的描述符将在 SocketVector[0] 和 SocketVector[1] 参数中返回。
/usr/include/sys/socket.h 文件包含套接字域,类型和协议的定义。
所有包含 Socketpair 子例程的应用程序都必须在 _BSD 宏设置为值 43 或 44 的情况下进行编译。 套接字应用程序必须包含 BSD libbsd.a 库。
参数
| 项 | 描述 |
|---|---|
| 域 | 指定在其中创建套接字的通信域。 此子例程不会在因特网域中创建套接字。 |
| TYPE | 指定套接字使用的通信方法 (无论是 SOCK_DGRAM 还是 SOCK_STREAM)。 |
| 协议 | 指向一个可选标识,用于指定哪个标准规则集 (例如 UDP/IP 和 TCP/IP) 管理数据传输。 |
| SocketVector | 指向包含已创建的一对套接字的整数描述符的两元素向量。 |
返回值
成功完成后, Socketpair 子例程将返回值 0。
如果 Socketpair 子例程不成功,那么该子例程处理程序将执行以下功能:
- 会向调用程序返回-1的值。
- 将错误代码 (指示特定错误) 移动到 错误号 全局变量中。
错误代码
如果 Socketpair 子例程不成功,那么它将返回下列其中一个错误代码:
| 错误 | 描述 |
|---|---|
| 电弧炉辅助系统 | 指定的地址系列中的地址不能与此套接字一起使用。 |
| Efault | SocketVector 参数不在用户地址空间的可写部分中。 |
| EMFILE | 此进程有太多正在使用的描述符。 |
| ENFILE | 当前已打开允许的最大文件数。 |
| ENOBUFS | 系统中没有足够的资源可用于执行该操作。 |
| EOPNOTSUPP | 指定的协议不允许创建套接字对。 |
| EPROTONOSUSUPPORT | 无法在此系统上使用指定的协议。 |
| 原型 | 该协议不支持该套接字类型。 |