SETALIASENT - Linux手册页

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

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)。

InterfaceAttributeValue
setaliasent(),endaliasent(),getaliasent_r(),getaliasbyname_r()Thread safetyMT-Safe locale
getaliasent(),getaliasbyname()Thread safetyMT-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);
}

另外参见

getgrent(3),getpwent(3),getspent(3),别名(5)

出版信息

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