分类: LINUX
2008-12-02 11:08:26
语法:
#include
char *getenv(const char *name);
int putenv(const
char *string);
如果获取的变量不存在,getopt返回null,如果变量存在,但是没有设置值,返回空字符串。结果存储在静态存储中。Putenv如果没有可用内存,返回-1, errno设置为ENOMEM。
改变的变量仅仅局部有效。
实例:设置读取变量
# cat
environ.c
// 1 The
first few lines after the declaration of main ensure that the program,
environ.c, has been called correctly.
#include
#include
#include
int
main(int argc, char *argv[])
{
char *var, *value;
if(argc == 1 || argc > 3) {
fprintf(stderr,"usage: environ var
[value]\n");
exit(1);
}
// 2 That
done, we fetch the value of the variable from the environment, using getenv.
var = argv[1];
value = getenv(var);
if(value)
printf("Variable %s has value
%s\n", var, value);
else
printf("Variable %s has no
value\n", var);
// 3
Next, we check whether the program was called with a second argument. If
it was, we set the variable to the value of that argument by constructing a
string of the form name=value and then calling putenv.
if(argc == 3) {
char *string;
value = argv[2];
string =
malloc(strlen(var)+strlen(value)+2);
if(!string) {
fprintf(stderr,"out of
memory\n");
exit(1);
}
strcpy(string,var);
strcat(string,"=");
strcat(string,value);
printf("Calling putenv with:
%s\n",string);
if(putenv(string) != 0) {
fprintf(stderr,"putenv
failed\n");
free(string);
exit(1);
}
// 4
Finally, we discover the new value of the variable by calling getenv
once again.
value = getenv(var);
if(value)
printf("New value of %s is
%s\n", var, value);
else
printf("New value of %s is
null??\n", var);
}
exit(0);
}
环境变量的语法:
#include
extern char **environ;
实例:读取环境变量
# cat showenv.c
#include
#include
extern char **environ;
int main()
{
char **env =
environ;
while(*env) {
printf("%s\n",*env);
env++;
}
exit(0);
}