无法使用 setenv() 更改环境变量

无法使用 setenv() 更改环境变量

我有一台成员服务器,该服务器带有带活动目录的 Windows PDC。安全性=ads。

我正在尝试使用 C 设置环境变量(凭据缓存):

setenv("CCACHE","缓存名称",1);

但是,当我执行 getenv("CCACHE") 时,它仍然显示变量的旧值。有人能帮我解决这个问题吗?

编辑:我基本上是想为 kerberos 身份验证设置 ccache。调用 fn const char * krb5_cc_default_name(krb5_context context) 仍会返回缓存的旧值。

According to MIT kerberos documentation,

默认凭据缓存名称在调用此函数之间的上下文中缓存,因此如果在第一次调用此函数后 KRB5CCNAME 的值在进程环境中发生变化,则该变化不会反映在具有相同上下文的后续调用中。调用者可以使用 NULL 值的名称调用 krb5_cc_set_default_name() 来清除缓存值并强制重新计算默认名称。

我已尝试过但它仍然返回旧值。

答案1

来自其他线程:环境变量是在程序上下文中设置的。

当您的程序退出时,您将回到程序启动时的上下文。

参见此主题 ->. 该线程还涵盖其他情况,例如同一程序中的不同进程。

相关内容