一、什么是libnsl.so.1库?
libnsl.so.1库提供了网络通信相关的一系列函数和服务。它是一个在Unix/Linux系统中使用的动态链接库。
二、该库的使用方法
在使用该库时,需要在代码中引入相关的头文件。
#include <rpcsvc/nis.h>
接下来介绍该库中的几个常用函数。
三、nismatch()
nismatch()函数用于在NIS数据库中查找与给定正则表达式相匹配的第一条记录。
#include <rpcsvc/nis.h>
/*
* Find the first matching entry in a given namespace.
*/
nis_result *
nismatch(char *name, char **domain, int domain_len, int flags,
char *svc, int svc_len)
{
nis_name n;
nis_result *res;
n = nis_domain_of(name);
if (n)
return (nismatch_domain(name, n, NULL, domain, domain_len,
flags | FOLLOW_LINKS, svc, svc_len));
else
return (nis_lookup(name, flags | FOLLOW_LINKS, svc, svc_len));
}
nismatch()函数的参数解析:
name: 查询的名称
domain: 查询和返回的域名
domain_len: domain数组的长度
flags: 查询标记,建议使用NIS_FOLLOW_LINKS
svc: NIS服务类型
svc_len: svc数组的长度
返回:nis_result结构体类型的查询结果。
四、nis_add()
nis_add()函数用于在NIS数据库中增加一条记录。
#include <rpcsvc/nis.h>
nis_result *
nis_add(char *name, char *data, u_long datalen, int flags,
int usetype, char *domain, int domainlen)
{
nis_name n;
nis_object obj;
n = nis_domain_of(name);
if (n) {
obj.zo_data.zo_type = NIS_ENTRY_OBJ;
obj.zo_data.objdata_u.e_data.en_type = usetype;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_len = 1;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val =
&obj.zo_data.objdata_u.e_data.en_cols.en_cols_val;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_tag =
__nis_default_tag();
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_flags = 0;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_name =
strdup(name);
if (!obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_name)
return (0);
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_value.zt_next =
NULL;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_value.zt_data.o_len =
datalen;
obj.zo_data.objdata_u.e_data.en_cols.en_cols_val->ec_value.zt_data.o_bytes =
data;
return (nis_add_entry(n, domain, &obj, flags));
}
return (NULL);
}
nis_add()函数的参数解析:
name: 要增加的记录的名称
data: 要增加的记录的内容
datalen: data数组的长度
flags: 标识如何增加条目,默认应该设置为NIS_ADD_OVERWRITE
usetype: 元素的类型
domain: 数据库的域名
domainlen: domain数组的长度
返回:nis_result结构体类型的查询结果。
五、nis_error()
nis_error()函数用于返回最近一次操作的NIS错误状态。
#include <rpcsvc/nis.h>
/*
* Return the last error from an nis call.
*/
nis_error *
nis_error(void)
{
if (_errst.status == NIS_SUCCESS)
return (0);
return (&_errst);
}
nis_error()函数不需要输入任何参数,返回值是nis_error结构体类型。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/295585.html
微信扫一扫
支付宝扫一扫