一、什么是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