【问题标题】:Global vs. local static variable for shell environment variablesshell 环境变量的全局与局部静态变量
【发布时间】:2011-04-11 02:55:05
【问题描述】:

我正在实现一个简单的 shell,我希望能够通过 shell 设置环境变量。使用set var = hello等简单语法

我有一个这样的结构来表示一个环境变量:

typedef struct {
    char *name;
    char *value;
}

我正在考虑创建一个上述结构的动态数组来保存所有环境变量。问题是我不确定如何正确实施。

现在,我不确定是否应该在函数或全局变量中将数组设为静态。哪一个会更好?为什么?

【问题讨论】:

  • 为什么不直接使用 setenv(3) 或 putenv(3) 并将设置放入 shell 环境中?

标签: c environment-variables


【解决方案1】:

这完全取决于需要从哪里访问变量。如果仅在单个函数中需要它们,那么静态局部变量最有意义。如果他们需要“文件范围”,那么文件全局(仍然是静态的)最有意义。否则,全局。

另一个选项,对于未来的扩展更好,是创建一个带有访问器函数的文件静态变量集,以获取和设置名称/值组合,并在其他任何地方使用该 API。如果您突然需要存储大量名称/值对(例如,存储到 b-tree 而不是数组),这可以让您稍后将存储机制更改为更有效的方式。

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多