BINDRESVPORT - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-09-15

遵循规范

不在POSIX.1中。存在于BSD,Solaris和许多其他系统上。

返回值

bindresvport()成功返回0;否则返回0。否则,返回-1并设置errno以指示错误原因。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
bindresvport()Thread safetyglibc >= 2.17: MT-Safe
glibc < 2.17: MT-Unsafe

bindresvport()函数使用的静态变量在glibc 2.17之前不受锁保护,从而使函数MT-不安全。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

说明

bindresvport()用于将文件描述符sockfd引用的套接字绑定到特权匿名IP端口,即,从512到1023范围内任意选择的端口号。

如果由bindresvport()执行的bind(2)成功,并且sin不为NULL,则sin-> sin_port返回实际分配的端口号。

sin可以为NULL,在这种情况下,sin-> sin_family被隐式地视为AF_INET。但是,在这种情况下,bindresvport()无法返回实际分配的端口号。 (以后可以使用getsockname(2)获得此信息。)

名称

bindresvport-将套接字绑定到特权IP端口

语法

#include <sys/types.h>
#include <netinet/in.h>

int bindresvport(int sockfd, struct sockaddr_in *sin);

错误说明

bindresvport()可能由于与bind(2)相同的原因而失败。此外,可能会发生以下错误:

EACCES
调用过程没有特权(在Linux上:调用过程在管理其网络名称空间的用户名称空间中不具有CAP_NET_BIND_SERVICE功能)。
EADDRINUSE
所有特权端口都在使用中。
EAFNOSUPPORT(EPFNOSUPPORTin glibc 2.7 and earlier)
sin不是NULL,并且sin->sin_family不是AF_INET。

另外参见

bind(2),getsockname(2)

备注

与某些bindresvport()实现不同,glibc实现忽略调用者在sin-> sin_port中提供的任何值。

日期:2019-08-20 17:59:55 来源:oir作者:oir