GETNETENT_R - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
getnetent_r,getnetbyname_r,getnetbyaddr_r-获取网络条目(可重入)
语法
#include <netdb.h> int getnetent_r(struct netent *result_buf, char *buf, size_t buflen, struct netent **result, int *h_errnop); int getnetbyname_r(const char *name, struct netent *result_buf, char *buf, size_t buflen, struct netent **result, int *h_errnop); int getnetbyaddr_r(uint32_t net, int type, struct netent *result_buf, char *buf, size_t buflen, struct netent **result, int *h_errnop);
Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):
getnetent_r(),getnetbyname_r(),getnetbyaddr_r():
从glibc 2.19开始:
_DEFAULT_SOURCE
Glibc 2.19及更早版本:
_BSD_SOURCE _SVID_SOURCE
说明
getnetent_r(),getnetbyname_r()和getnetbyaddr_r()函数分别是getnetent(3),getnetbyname(3)和getnetbynumber(3)的可重入等效项。它们在返回netent结构的方式以及调用签名和返回值的函数方面有所不同。本手册页仅介绍与不可重入功能的区别。
这些函数没有将指向静态分配的netent结构的指针作为函数结果返回,而是将结构复制到result_buf指向的位置。
buf数组用于存储返回的netent结构所指向的字符串字段。 (nonreentrant函数在静态存储中分配这些字符串。)此数组的大小在buflen中指定。如果buf太小,则调用将失败,并显示错误ERANGE,并且调用方必须使用更大的缓冲区再次尝试。 (对于大多数应用程序,长度为1024字节的缓冲区应该足够了。)
如果函数调用成功获取网络记录,则将* result设置为指向result_buf;否则,* result设置为NULL。
h_errnop指向的缓冲区用于返回这些函数的非重入版本将存储在全局变量h_errno中的值。
返回值
成功时,这些函数返回0。错误时,它们返回ERRORS中列出的正错误号之一。
错误时,未找到记录(getnetbyname_r(),getnetbyaddr_r())或输入结尾(getnetent_r())的结果设置为NULL。
错误说明
- ENOENT
- (getnetent_r())数据库中没有更多记录。
- ERANGE
- buf太小。使用更大的缓冲区(并增加buflen)再试一次。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
getnetent_r(),getnetbyname_r(),getnetbyaddr_r() | Thread safety | MT-Safe locale |
遵循规范
这些功能是GNU扩展。具有相同名称的功能在其他一些系统上也存在,尽管通常具有不同的调用签名。
另外参见
getnetent(3),网络(5)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。