我可以更改getenv的返回值吗?

时间:2013-08-20 07:33:06

标签: c environment-variables

我想知道如果我从getenv

更改内存回报会发生什么

我知道这不是一个好的代码。顺便提一下,我知道setenv

像:

char *new_path = "/home/user/dev/myTry1";
char *path = getenv("PATH");// assume there is : PATH=/home/user/dev/myTry
//now *path = "/home/user/dev/myTry" 
memcpy(path,new_path,strlen(new_path)+1);

这是一种未定义的行为吗?或者只是错误的代码?

我试过了,没有发生错误或分段错误。

2 个答案:

答案 0 :(得分:5)

不,你不能。来自documentation

  

要求合规应用程序不要直接修改environ,而是仅使用此处描述的功能将流程环境作为抽象对象进行操作。

答案 1 :(得分:2)

带有未定义行为的代码错误。即你不是保姆。