我目前正在编写一个程序,如果设置了环境变量,我想打印特殊输出。
例如,假设我想要环境变量"DEBUG"
。
在我的 bash 命令提示符中,我通过键入以下命令来设置 DEBUG
:
DEBUG=
然后在我的 C 程序中,我可以通过打印出 char **environ
的所有内容来验证此环境变量是否已设置。 DEBUG
确实出现在此环境打印输出中。
但是,我不知道如何检索此环境变量以进行条件检查。我试过像这样使用函数 getenv :
getenv("DEBUG")
如果我尝试像下面这样打印出这个输出,我会得到一个段错误:
printf("get env: %s\n", getenv("DEBUG"));
我什至在一个已知的环境变量上试过这个,比如 "HOME"
:
printf("get env: %s\n", getenv("HOME"));
仍然会产生段错误。
有没有人有检查环境变量是否从 C 程序设置的经验?我什至在提取单个环境变量时遇到问题,这使我无法这样做。
最佳答案
getenv
在要求的环境变量未设置时返回 NULL
。因此,您的支票可能只是
if(getenv("DEBUG")) {
// DEBUG is set
} else {
// DEBUG is not set
}
请注意,shell 和环境变量之间存在差异;如果你想让一个变量出现在 shell 子进程的环境中,你必须在 shell 中export
它:
export DEBUG=some_value
或
DEBUG=some_value
export DEBUG
仅仅说 DEBUG=some_value
是不够的。
关于c - 如何检查是否从 C 程序设置了环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004602/