BINDRESVPORT - Linux手册页
时间:2019-08-20 17:59:55 来源:igfitidea点击:
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
bindresvport-将套接字绑定到特权IP端口
语法
#include <sys/types.h> #include <netinet/in.h> int bindresvport(int sockfd, struct sockaddr_in *sin);
说明
bindresvport()用于将文件描述符sockfd引用的套接字绑定到特权匿名IP端口,即,从512到1023范围内任意选择的端口号。
如果由bindresvport()执行的bind(2)成功,并且sin不为NULL,则sin-> sin_port返回实际分配的端口号。
sin可以为NULL,在这种情况下,sin-> sin_family被隐式地视为AF_INET。但是,在这种情况下,bindresvport()无法返回实际分配的端口号。 (以后可以使用getsockname(2)获得此信息。)
返回值
bindresvport()成功返回0;否则返回0。否则,返回-1并设置errno以指示错误原因。
错误说明
bindresvport()可能由于与bind(2)相同的原因而失败。此外,可能会发生以下错误:
- EACCES
- 调用过程没有特权(在Linux上:调用过程在管理其网络名称空间的用户名称空间中不具有CAP_NET_BIND_SERVICE功能)。
- EADDRINUSE
- 所有特权端口都在使用中。
- EAFNOSUPPORT(EPFNOSUPPORTin glibc 2.7 and earlier)
- sin不是NULL,并且sin->sin_family不是AF_INET。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
bindresvport() | Thread safety | glibc >= 2.17: MT-Safe glibc < 2.17: MT-Unsafe |
bindresvport()函数使用的静态变量在glibc 2.17之前不受锁保护,从而使函数MT-不安全。
遵循规范
不在POSIX.1中。存在于BSD,Solaris和许多其他系统上。
备注
与某些bindresvport()实现不同,glibc实现忽略调用者在sin-> sin_port中提供的任何值。
另外参见
bind(2),getsockname(2)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。