一、什麼是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/zh-tw/n/295585.html
微信掃一掃
支付寶掃一掃