一些关于环境变量的纳闷

一些关于环境变量的疑惑
在研究环境变量相关的东西,一些基本问题不太理解求解答:
1、C语言有getenv(),setenv()等函数可以查询和设置环境变量,请问:他们查询和设置的变量是系统环境变量还是用户环境变量?
2、引申上面的问题:如果用户环境变量和系统环境变量重名,那么使用getenv()取得的是哪一个环境变量?
3、当用户环境变量和系统环境变量存在重名变量时,哪一个变量起作用?

问题比较基础所以请大家说得透彻一些,网上查的一些资料都没有对这些问题说明清楚。
以上问题无论linux或者windows都可以讨论。

谢谢!
------解决思路----------------------
个人看法,所谓的系统变量和用户变量,是shell特有的概念。shell fork出来的子进程,会继承shell的系统变量,但不会继承shell的用户变量。而对于这个子进程而言,并没有什么系统变量和用户变量之分,所以getenv()和setenv()都只是在操作那些从shell继承下来的变量罢了。
------解决思路----------------------
引用:
在研究环境变量相关的东西,一些基本问题不太理解求解答:
1、C语言有getenv(),setenv()等函数可以查询和设置环境变量,请问:他们查询和设置的变量是系统环境变量还是用户环境变量?
2、引申上面的问题:如果用户环境变量和系统环境变量重名,那么使用getenv()取得的是哪一个环境变量?
3、当用户环境变量和系统环境变量存在重名变量时,哪一个变量起作用?

问题比较基础所以请大家说得透彻一些,网上查的一些资料都没有对这些问题说明清楚。
以上问题无论linux或者windows都可以讨论。

谢谢!


就个人经验来说,一般听不到linux有什么系统环境变量, 用户环境变量的说法,对于一个process来说环境变量就是一个hashmap,不会有多个同名值同时存在