【问题标题】:How to use environment variable in a C program如何在 C 程序中使用环境变量
【发布时间】:2021-12-29 15:11:44
【问题描述】:

我需要知道在 C 编程语言中使用环境变量的方法。如何使用和阅读它们?

例如,读取一个环境变量或获取一个环境变量的值并将其加载到另一个变量中。

【问题讨论】:

标签: c variables path environment


【解决方案1】:

您可以使用以下功能 -

char * getenv (const char *name)-返回一个字符串,它是环境变量名的值。

char * secure_getenv (const char *name)

在此处了解更多功能 -http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

【讨论】:

  • 感谢您提供有用的链接!但是,请您澄清(或提供某种文章澄清的链接)为什么当可执行文件设置了 SUID/SGID 位时环境不受信任?
  • @Kolay.Ne 使用有效的 uid/gid,程序可能会获得一些额外的权限,例如 root 权限。如果环境变量被设置为一些恶意值,它可能是有害的。此外,此类程序可以为运行它的用户提供相同的权限,并且有点像后门入口。
【解决方案2】:

使用stdlib.h 中的getenv 函数。就是这样!

【讨论】:

  • 此处的链接现已损坏。通常最好在答案中包含更多上下文,以防外部链接在发布数年后中断。
【解决方案3】:

getenv:

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

int main(int argc, char *argv[])
{
    char* my_env_var = getenv("MY_ENV_VAR");

    if(my_env_var)
        printf("Var found: %s", my_env_var );
    else
        printf("Var not found.");                

    return 0;
}

【讨论】:

  • 我试过了,但 gcc 不喜欢它:"error: initializer element is not constant" gcc 7.5.0 on ubuntu18
猜你喜欢
  • 1970-01-01
  • 2018-02-25
  • 2019-01-20
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多