ENVZ_ADD - Linux手册页
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)。
Interface | Attribute | Value |
envz_add(),envz_entry(), envz_get(),envz_merge(), envz_remove(),envz_strip() | Thread safety | MT-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/。