getnetent_r函数用法详解
getnetent_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 );
getnetent_r函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘getnetent_r’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <netdb.h>
getnetent_r函数详细描述
getnetent_r () getnetbyname_r ()和getnetbyaddr_r ()函数分别是getnetent (3) getnetbyname (3)和getnetbynumber (3)的可重入等价物。它们的不同之处在于返回netent结构的方式,以及调用签名和返回值的函数。本手册页只描述了与不可重入函数的区别。
这些函数不返回指向静态分配的netent结构的指针作为函数结果,而是将该结构复制到result_buf 所指向的位置
buf数组用于存储返回的netent结构所指向的字符串字段。(不可重入函数在静态存储中分配这些字符串。)此数组的大小在buflen 中指定。如果buf太小,则调用失败,错误为ERANGE ,调用方必须使用更大的缓冲区重试。(对于大多数应用程序,长度为1024字节的缓冲区应该足够了。)
如果函数调用成功获得网络记录,则*result被设置为指向result_buf ;,否则,*result被设置为NULL。
h_errnop指向的缓冲区用于返回这些函数的不可重入版本将存储在全局变量h_errno中的值。
getnetent_r函数返回值
成功后,这些函数返回0。出错时,它们返回错误中列出的正错误号之一。
出错时,记录未找到( getnetbyname_r () getnetbyaddr_r ())或输入( getnetent_r ()) result的结尾设置为空。
getnetent_r函数错误码
- ENOENT ( getnetent_r ())数据库中没有更多记录。
- ERANGE buf太小。使用更大的缓冲区(和增加的buflen ))重试
评论区