ple*_*ver 2 c unix environment-variables
我目前正在开发一个程序,如果设置了环境变量,我想打印特殊输出。
例如,假设我想要环境变量"DEBUG"。
在我的 bash 命令提示符中,我DEBUG通过键入以下命令进行设置:
DEBUG=
然后在我的 C 程序中,我可以通过打印出char **environ. DEBUG确实出现在此环境打印输出中。
但是,我不知道如何检索此环境变量以进行条件检查。我试过像这样使用 getenv 函数:
getenv("DEBUG")
Run Code Online (Sandbox Code Playgroud)
如果我尝试打印出如下所示的输出,则会出现段错误:
printf("get env: %s\n", getenv("DEBUG"));
Run Code Online (Sandbox Code Playgroud)
我什至在一个已知的环境变量上试过这个,比如"HOME":
printf("get env: %s\n", getenv("HOME"));
Run Code Online (Sandbox Code Playgroud)
这仍然会产生段错误。
有没有人有任何经验检查是否从 C 程序设置了环境变量?我什至在拉出一个阻止我这样做的环境变量时也遇到了问题。
getenv返回NULL时,没有设置,这就是它要求环境变量。因此,您的支票可能只是
if(getenv("DEBUG")) {
// DEBUG is set
} else {
// DEBUG is not set
}
Run Code Online (Sandbox Code Playgroud)
请注意,shell 和环境变量之间存在差异;如果你想让一个变量出现在 shell 的子进程的环境中,你必须export在 shell 中使用它:
export DEBUG=some_value
Run Code Online (Sandbox Code Playgroud)
或者
DEBUG=some_value
export DEBUG
Run Code Online (Sandbox Code Playgroud)
光说是不够的DEBUG=some_value。
| 归档时间: |
|
| 查看次数: |
12679 次 |
| 最近记录: |