【问题标题】:Linux Environment Variable and C project getenv()Linux 环境变量和 C 项目 getenv()
【发布时间】:2014-06-10 09:55:47
【问题描述】:

我需要为 C 项目使用环境变量,所以我在终端中执行此操作:

export FILE_CONFIG="/home/pc/file.conf"

file.conf 是我创建的文件。

如果我在终端中执行env,我可以在列表中看到“FILE_CONFIG”及其值(/home/pc/file.conf)。 我想分配给 path_to_config -> /home/pc/file.conf 所以在 .C 程序中我这样做了:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

    char* path_to_config = getenv("FILE_CONFIG");

但是getenv 没有返回 FILE_CONFIG 的路径。 当我查看调试模式时 path_to_config 值为 0x0。 我已经尝试过使用其他环境变量,但我无法使用我导出的这个环境变量。

【问题讨论】:

  • 只是为了测试,在你的getenv之前做一个system("env")
  • 只是为了确保:设置变量的 shell 必须与调用二进制文件的 shell 相同。是这样吗?
  • 嗯,它打印了一个列表,但我看不到我的环境变量
  • Marcus Rickert,我不知道是否将变量设置在同一个shell中

标签: c linux path environment-variables getenv


【解决方案1】:

让我猜猜:您正在从 IDE 运行您的程序。 IDE 为您的程序提供的环境与您导出变量的环境完全无关。建议:从命令行在终端运行您的程序,您在其中执行export。你应该可以看到你的变量了。

然后在您的 IDE 中搜索为目标程序指定环境的方法,并将其设置在那里。

(可选)将导出行添加到 shell 的启动脚本中。

【讨论】:

  • 是的!是日食。我可以为目标程序指定环境,但只有在调试模式下才能看到结果..
猜你喜欢
  • 2013-05-04
  • 2014-02-02
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 2016-11-13
相关资源
最近更新 更多