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