SETNETGRENT - Linux手册页

时间:2019-08-20 18:00:10  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

setnetgrent,endnetgrent,getnetgrent,getnetgrent_r,innetgr-处理网络组条目

语法

#include <netdb.h>

int setnetgrent(const char *netgroup);

void endnetgrent(void);

int getnetgrent(char **host, char **user, char **domain);

int getnetgrent_r(char **host, char **user,
                  char **domain, char *buf, size_t buflen);

int innetgr(const char *netgroup, const char *host,
            const char *user, const char *domain);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

setnetgrent(),endnetgrent(),getnetgrent(),getnetgrent_r(),innetgr():
从glibc 2.19开始:
_DEFAULT_SOURCE
Glibc 2.19及更早版本:
_BSD_SOURCE _SVID_SOURCE

说明

网络组是SunOS的发明。网络组数据库是字符串三元组(主机名,用户名,域名)或其他网络组名的列表。三元组中的任何元素都可以为空,这意味着任何匹配项。此处描述的功能允许访问网络组数据库。文件/etc/nsswitch.conf定义了要搜索的数据库。

setnetgrent()调用定义了随后的getnetgrent()调用将搜索的网络组。 getnetgrent()函数检索下一个网络组条目,并返回主机,用户,域中的指针。空指针表示相应的条目与任何字符串匹配。指针仅在不调用其他与netgroup相关的功能时才有效。为避免此问题,可以使用GNU函数getnetgrent_r()将字符串存储在提供的缓冲区中。要释放所有分配的缓冲区,请使用endnetgrent()。

在大多数情况下,您只想检查三元组(主机名,用户名,域名)是否是网络组的成员。函数innetgr()可以用于此目的,而无需调用以上三个函数。同样,空指针是通配符,并且匹配任何字符串。该函数是线程安全的。

返回值

这些函数成功返回1,失败返回0。

文件

/ etc / netgroup
/etc/nsswitch.conf

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
setnetgrent(),
getnetgrent_r(),
innetgr()
Thread safetyMT-Unsafe race:netgrent
locale
endnetgrent()Thread safetyMT-Unsafe race:netgrent
getnetgrent()Thread safetyMT-Unsafe race:netgrent
race:netgrentbuf locale

在上表中,race:netgrent中的netgrent表示如果在程序的不同线程中并行使用了setnetgrent(),getnetgrent_r(),innetgr(),getnetgrent()或endnetgrent()中的任何函数,则数据种族可能会发生。

遵循规范

这些函数不在POSIX.1中,但是setnetgrent(),endnetgrent(),getnetgrent()和innetgr()在大多数UNIX系统上可用。 getnetgrent_r()在其他系统上并不广泛可用。

备注

在BSD实现中,setnetgrent()返回void。

另外参见

sethostent(3),setprotoent(3),setservent(3)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/