SETALIASENT - Linux手册页
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
setaliasent,endaliasent,getaliasent,getaliasent_r,getaliasbyname,getaliasbyname_r-读取别名条目
语法
#包括
void setaliasent(void);
void endaliasent(void);
结构别名* getaliasent(void);
int getaliasent_r(结构别名*结果,
char * buffer,size_t buflen,结构别名** res);
结构别名* getaliasbyname(const char * name);
int getaliasbyname_r(const char * name,struct aliasent * result,
char * buffer,size_t buflen,结构别名** res);
说明
名称服务交换机(NSS)可用的数据库之一是别名数据库,其中包含邮件别名。 (要了解支持哪些数据库,请尝试使用getent --help。)提供了六个函数来访问别名数据库。
getaliasent()函数返回一个指向包含别名数据库中组信息的结构的指针。第一次调用它会返回第一个条目。此后,它将返回连续的条目。
setaliasent()函数将文件指针后退到别名数据库的开头。
endaliasent()函数关闭别名数据库。
getaliasent_r()是上一个函数的可重入版本。所请求的结构是通过第一个参数存储的,但是程序员也需要填充其他参数。没有提供足够的空间会导致功能失败。
函数getaliasbyname()使用name参数并搜索别名数据库。该条目作为指向结构别名的指针返回。
getaliasbyname_r()是上一个函数的可重入版本。所请求的结构通过第二个参数存储,但是程序员也需要填充其他参数。没有提供足够的空间会导致功能失败。
struct别名定义在:
struct aliasent {
char *alias_name; /* alias name */
size_t alias_members_len;
char **alias_members; /* alias name list */
int alias_local;
};
返回值
函数getaliasent_r()和getaliasbyname_r()返回错误时的非零值。
文件
缺省别名数据库是文件/ etc / aliases。可以在/etc/nsswitch.conf文件中进行更改。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
| Interface | Attribute | Value |
| setaliasent(),endaliasent(),getaliasent_r(),getaliasbyname_r() | Thread safety | MT-Safe locale |
| getaliasent(),getaliasbyname() | Thread safety | MT-Unsafe |
遵循规范
这些例程是glibc特定的。 NeXT系统具有类似的例程:
#include <aliasdb.h> void alias_setent(void); void alias_endent(void); alias_ent *alias_getent(void); alias_ent *alias_getbyname(char *name);
示例
以下示例使用gcc example.c -o示例进行编译。它将所有名称转储到别名数据库中。
#include <aliases.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int
main(void)
{
struct aliasent *al;
setaliasent();
for (;;) {
al = getaliasent();
if (al == NULL)
break;
printf("Name: %s\n", al->alias_name);
}
if (errno) {
perror("reading alias");
exit(EXIT_FAILURE);
}
endaliasent();
exit(EXIT_SUCCESS);
}
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。

