GETNETENT_R - Linux手册页

时间:2019-08-20 18:00:29  来源:igfitidea点击:

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)。

InterfaceAttributeValue
getnetent_r(),getnetbyname_r(),getnetbyaddr_r()Thread safetyMT-Safe locale

遵循规范

这些功能是GNU扩展。具有相同名称的功能在其他一些系统上也存在,尽管通常具有不同的调用签名。

另外参见

getnetent(3),网络(5)

出版信息

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