gpt4 book ai didi

c - envz_get 和 getenv 是否引用相同的环境变量池?

转载 作者:行者123 更新时间:2023-12-02 00:55:30 25 4
gpt4 key购买 nike

getenv()envz_get() 都从相同的来源查找环境变量,如果后者传递了可选的 envp 参数到 int main (int argc, char *argv[], char *envp[])?

换句话说,int main (int argc, char *argv[], char *envp[]) 的可选 envp 参数是否引用同一个池getenv() 引用的环境变量?

最佳答案

根据我的经验,是的,它们是相同的。如果不是这样, getenv() 似乎不会特别有用。这不是我几十年来测试过的东西,但为了回答你的问题,我只是运行了一个测试,虽然标准允许 getenv() 使用静态内存区域来返回,但它的返回值都指向到 main 的第三个参数中等号后的第一个字符。我模糊地记得上次我做这个测试时也发生过这种情况,尽管那是一个不同的 unix 系统。

话虽这么说,看看标准,或者我能合理地接近那个……来自上次免费提议的 C17 草案:

The getenv function searches an environment list, provided by the host environment, for a string that matches the string pointed to by name . The set of environment names and the method for altering the environment list are implementation-defined. The getenv function need not avoid data races with other threads of execution that modify the environment list. 305)

The implementation shall behave as if no library function calls the getenv function. Returns The getenv function returns a pointer to a string associated with the matched list member. The string pointed to shall not be modified by the program, but may be overwritten by a subsequent call to the getenv function. If the specified name cannot be found, a null pointer is returned.

305) Many implementations provide non-standard functions that modify the environment list.

这基本上意味着,可能,但 C 语言并不能完全保证。

关于c - envz_get 和 getenv 是否引用相同的环境变量池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54567382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com