gliethttpgliethttp.blog.chinaunix.net
gliethttp
全部博文(2005)
2014年(2)
2013年(2)
2012年(16)
2011年(66)
2010年(368)
2009年(743)
2008年(491)
2007年(317)
linux_zj
程睿
mzh2100
dogsun88
叶绍琛
kowems
gongping
chumojin
高泽然
xy7777
os123456
hiderhao
zahassio
byy6by
zxy11861
COVID_19
a1960048
swzswz
分类: LINUX
2008-09-04 10:34:32
浅析getenv库函数背后的故事 pc执行evn指令,手机使用adb shell执行printenv指令. PWD=/home/luther 所以 const char *val = getenv("PWD");获取"PWD"环境变量对应的数值,所以val指向"/home/luther"字符串,失败返回NULL. 看看getenv库函数的具体实现: ===================================================================== char * getenv(const char *name) { int offset; return (__findenv(name, &offset)); } char * __findenv(const char *name, int *offset) { extern char **environ; int len, i; const char *np; char **p, *cp; if (name == NULL || environ == NULL) return (NULL); for (np = name; *np && *np != '='; ++np) ; len = np - name; for (p = environ; (cp = *p) != NULL; ++p) { //environ为glibc库的环境变量指针数组,可以使用env指令显示environ变量指向的所有数值[luther.gliethttp]. for (np = name, i = len; i && *cp; i--) if (*cp++ != *np++) break; if (i == 0 && *cp++ == '=') { *offset = p - environ; return (cp);//ok,这里cp指针指向"/home/luther"了. } } return (NULL); }
上一篇:lrzsz串口数据收发软件
下一篇:include/asm-generic/errno.h中包含所有通用erro错误号
登录 注册