【发布时间】:2013-06-17 17:21:12
【问题描述】:
我用 C 语言编写了一个应用程序,它应该读取环境变量并适当地处理这些更改。当应用程序启动时,我已将其设置为继续并通过 setenv("MYVARIABLE", "TEST", 1) 初始化变量(以防止任何空指针返回)。
此应用程序经常循环,并且在这些循环期间,它的工作之一是通过 getenv("MYVARIABLE") 检查该全局变量。
当时的计划是让 shell 脚本或 python 脚本更改这些环境变量。 C 应用程序是全屏的,所以如果没有另一个终端条目,我无法测试这个过程。在我的另一个终端 (c2) 我运行以下命令:
MYVARIABLE="My New Value"
或
export MYVARIABLE="My New Value"
不过,我的应用程序似乎没有捕捉到环境更新。相反,它继续坚持 MYVARIABLE 是“测试”,而不是“我的新价值”。我不确定为什么这两个环境是分开的,但我需要它们一起工作。有谁知道我做错了什么?
我的系统正在为任何感兴趣的人运行 Archlinux
【问题讨论】:
-
这些是不同的,因为您运行两个不同的 shell 实例。
-
H2CO3 那么是否可以为主shell设置环境变量呢?
-
我在谷歌搜索(你也可能在谷歌搜索)。
-
如果您在另一个终端窗口中设置新变量,它是在另一个会话中,为什么不使用
&(即./a.out &)启动您的程序,这样您就可以在同一个会话? -
Mike,该程序实际上是一个桌面管理器。 UI 是占据屏幕的部分。
getenv("MYVARIABLE")的结果应该显示在屏幕上。在我在桌面管理器中配置终端支持之前,我将无法执行此类操作。
标签: c environment-variables setenv getenv