今天写程序的时候,发现一个很奇怪的现象.
我的程序必须要获得系统的环境变量,假设是LANG,是在.bash_profile中export的.
那么,一共有2个c文件(当然,程序很大,文件很多,但是关键代码就2个c文件).
当程序第一次在A.c执行getenv("LANG")的时候,程序正常返回LANG的值.
奇怪的事情发生了,当第二次在文件B.c中执行相同代码getenv("LANG")的时候,不管怎么样,都是返回的NULL;
百思不得其解,最后在getenv之前,调用了一下系统命令export,发现LANG这个系统变量没有了.(系统中还有)
最后没有办法,选择了一个折中的办法,在文件A.c中getenv之后立即putenv把LANG在设置一遍,然后在B.c中正常获取到了.
虽然是这样解决了,但是心里总是很费解,于是回家打开虚拟机进行测试.
测试结果却让我很吃惊,不管如何getenv,结果总是正确的.
这是我最不能理解的地方.
不过,也没法说,因为我公司的linux是64位HP,我虚拟机是ubuntu.
本来我想公司出现的情况,是因为子shell执行的问题,不过我没有办法去证明.
只能盼望大牛们能够给我说一下,让我也明白明白.
我测试的代码打包(就几行,没一点技术):
相关文章:
评论
评论正在努力加载...