我想通过读取环境变量来禁用/启用printf()
输出到屏幕,类似于LD_DEBUG
的工作方式。
我想控制./stdio-common/printf.c
。
因此,如果在环境变量中说禁用printf(),则调用
int
__printf (const char *format, ...)
{
return done;
}
否则它会执行原始代码。我该如何实现呢?
答案 0 :(得分:3)
使用getenv
。有关详细信息,请参阅getenv(3)
。
答案 1 :(得分:0)
推荐的方法是使用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()
的第三个参数可能char **envp
被广泛用于获取有关环境的信息,并且是non-standard
。
int main(int argc, char **argv, char **envp)
{
while(*envp)
printf("%s\n",*envp++);
}
使用main()
中的第三个参数 not 严格符合标准。
还有另一种广泛使用的非标准方式来访问环境变量,即通过environ
外部变量。
int i=0;
extern char ** environ;
while(environ[i])
printf("\n%s",environ[i++]);
注意:示例不完整,缺少错误处理。