ENVZ_ADD - Linux手册页

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

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

名称

envz_add,envz_entry,envz_get,envz_merge,envz_remove,envz_strip-环境字符串支持

语法

#include <envz.h>

error_t envz_add(char **envz, size_t *envz_len,
                 const char *name, const char *value);

char *envz_entry(const char *envz, size_t envz_len, const char *name);

char *envz_get(const char *envz, size_t envz_len, const char *name);

error_t envz_merge(char **envz, size_t *envz_len,
                   const char *envz2, size_t envz2_len, int override);

void envz_remove(char **envz, size_t *envz_len, const char *name);

void envz_strip(char **envz, size_t *envz_len);

说明

这些功能是glibc特定的。

argz向量是指向字符缓冲区以及长度的指针,请参见argz_add(3)。 envz向量是一种特殊的argz向量,即字符串形式为"名称=值"的向量。第一个aq = aq之后的所有内容均视为该值。如果没有aq = aq,则将该值视为NULL。 (尽管在aq = aq后缀的情况下,该值为空字符串""。)

这些函数用于处理envz向量。

envz_add()将字符串name = value(如果值是非NULL)或name(如果值是NULL)添加到envz向量(* envz,* envz_len)并更新* envz和* envz_len。如果存在同名条目,则将其删除。

envz_entry()在envz向量(envz,envz_len)中查找名称,如果找到则返回条目,否则返回NULL。

envz_get()在envz向量中查找名称(envz,envz_len),如果找到则返回值,否则返回NULL。 (请注意,该值也可以为NULL,即当存在不带aq = aq符号的名称条目时。)

envz_merge()将envz2中的每个条目添加到* envz中,就像使用envz_add()一样。如果override为true,则envz2中的值将替代* envz中具有相同名称的值,否则不替代。

如果存在,envz_remove()将从(* envz,* envz_len)中删除名称条目。

envz_strip()删除所有值为NULL的条目。

返回值

所有执行内存分配的envz函数的返回类型为error_t,如果成功则返回0,如果发生分配错误,则返回ENOMEM。

属性

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

InterfaceAttributeValue
envz_add(),envz_entry(),
envz_get(),envz_merge(),
envz_remove(),envz_strip()
Thread safetyMT-Safe

遵循规范

这些功能是GNU扩展。小心轻放。

示例

#include <stdio.h>
#include <stdlib.h>
#include <envz.h>

int
main(int argc, char *argv[], char *envp[])
{
    int i, e_len = 0;
    char *str;

    for (i = 0; envp[i] != NULL; i++)
        e_len += strlen(envp[i]) + 1;

    str = envz_entry(*envp, e_len, "HOME");
    printf("%s\n", str);
    str = envz_get(*envp, e_len, "HOME");
    printf("%s\n", str);
    exit(EXIT_SUCCESS);
}

另外参见

argz_add(3)

出版信息

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