linux环境变量相关操作

betball贝博app C语言, Linux 491 次浏览 没有评论

对环境变量的操作需要引用stdlib.h函数

getenv("HOME");获取$HOME的值

putenv("HOME=/home/admin");设置环境变量的值

setenv("HOME","home/admin",0);第三个参数为0则不覆盖原值,为1则覆盖

另外学习了一个新的函数,perror("提示信息:");

执行该函数,会先输出括号中的字符串,然后将错误信息继续输出,但是对于上面获取环境变量的函数来说,无论是否存在该环境变量,都会返回success。所以对于perror函数的学习,仍待后面的程序中继续实验。

所有的对于环境变量的操作,只会影响到当前进程和子进程,不会影响到父进程和系统的环境变量表。

[cce_cpp]
#include<stdio.h>
#include <stdlib.h>
extern ** environ;//环境变量表//windows下无法使用
int main()
{
	char *p;
	int i;
/*	for(i=0;environ[i]!=NULL;i++)
		printf("each:%s\n",environ[i]);//输出所有的环境变量*/
	p = getenv("HOME");
	if(p==NULL)
	{
		perror("fail to getenv:");
		exit(1);
	}
	printf("HOME is %s\n",p);  	//通过putenv修改  	if(putenv("HOME=/home")==-1)  	{  		perror("fail to putenv");  		exit(1);  	}  	p = getenv("HOME");  	if(p==NULL)  	{  		perror("fail to getenv:");  		exit(1);  	}  	printf("HOME is %s\n",p);
	//通过setenv修改
	if(setenv("HOME","/home/1",1)==-1)//0不覆盖,1覆盖
	{
		perror("fail to putenv");
		exit(1);
	}
	p = getenv("HOME");
	if(p==NULL)
	{
		perror("fail to getenv:");
		exit(1);
	}
	printf("$HOME is %s\n",p);
}
[/cce_cpp]

发表评论

邮箱地址不会被公开。

Go