/*
功能:显示环境变量的值
*/
#include <stdio.h>
extern char **environ;
// 查找环境变量的值,与系统调用getenv()功能相同
char* findenv(char *name) // 在环境变量中查找指定的变量名,如找到,则返回其值('='后的字符串)
{
int len;
char **p;
for(p = environ; *p; p++)
{
if((len = pcmp(name, *p)) > 0 && *(*p+len) == '=')
return *p+len+1;
}
return NULL;
}
int pcmp(char *s1, char *s2) // 比较环境变量名是否相等
{
int i = 0;
while(*s1)
{
i++;
if(*s1++ != *s2++)
return -1;
}
return i;
}
int main(int argc, char *argv[])
{
if(argc > 1)
{
char *p = findenv(argv[1]); // argv[1]是要查找的环境变量名
if(NULL != p)
{
printf("%s = %s\n", argv[1], p);
}
else
printf("找不到环境变量:%s\n", argv[1]);
}
else
printf("Usage: %s <ENV_NAME>\n", argv[0]);
return 0;
}
看看运行结果吧:
[zcm@t #166]$./a ORACLE_
找不到环境变量:ORACLE_
[zcm@t #167]$./a ORACLE_HOME
ORACLE_HOME = /opt/oracle/product/11.2.0/db_1
[zcm@t #168]$
注:上面的findenv()与系统调用getenv()功能相同