如何在Glibc代码中读取环境变量
我想通过读取环境变量禁用/启用如何在Glibc代码中读取环境变量,c,glibc,C,Glibc,我想通过读取环境变量禁用/启用printf()输出到屏幕,类似于LD\u DEBUG的工作方式 我想控制/stdio common/printf.c 所以,如果环境变量中说disable printf(),它将调用 否则它将执行原始代码。如何实现此功能?使用getenv。有关详细信息,请参见getenv(3)。建议使用ANSI提供的解决方案作为getenv()函数,以实现最大的可移植性: #include <stdlib.h> #include <stdio.h> in
printf()
输出到屏幕,类似于LD\u DEBUG
的工作方式
我想控制/stdio common/printf.c
所以,如果环境变量中说disable printf(),它将调用
否则它将执行原始代码。如何实现此功能?使用
getenv
。有关详细信息,请参见getenv(3)
。建议使用ANSI提供的解决方案作为getenv()
函数,以实现最大的可移植性:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char * env = getenv(“PROMPT”));
if(env)
puts(env);
else
puts(“The environmental variable not available”);
return 0;
}
在main()
中使用第三个参数不符合标准
另一种广泛使用的非标准方式是通过环境
外部变量访问环境变量
int i=0;
extern char ** environ;
while(environ[i])
printf("\n%s",environ[i++]);
注意:示例是完整的,缺少错误处理 请参阅,以了解调试printf-s的可能方法,如果这是您想要的。但是您确实不应该禁用系统的
printf
(因为您不知道系统的其他部分是否希望它工作,并且因为C标准定义了它的行为)。
int main(int argc, char **argv, char **envp)
{
while(*envp)
printf("%s\n",*envp++);
}
int i=0;
extern char ** environ;
while(environ[i])
printf("\n%s",environ[i++]);