Linux编程时的环境变量

1 环境变量的获取和设置

环境变量是一些能用来控制shell脚本和其它程序行为的变量,可用它们配置当前用户的运行环境,可以用set命令来列出所有的环境变量,还可用echo $HOME来列出具体变量名对应的值。
在这里插入图片描述

#include <stdlib.h>
char* getenv(const char* name);
int putenv(const char* string);

环境变量由一组格式为“名字=值”的字符串组成。
切记设置的环境变量仅对本程序有效,在程序中做的改变不会反应到外部环境中,因为变量的值不会从子进程(本程序)传播到父进程(shell程序)。环境变量就像全局变量一样,可能会对程序的行为造成较大影响。
getenv函数以给定的名字搜索环境中的一个字符串,并返回与该名字相关的值,返回的字符串存储在getenv提供的静态空间中,进一步使用需要用strcmp复制。不存在时返回NULL。
putenv函数以格式为“名字=值”的字符串作为参数,将该字符串加到当前环境中,失败时返回-1并设置error,成功时返回0。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[ ])
{
	char* var,*value;
	if(argc == 1 || argc > 3)
	{
		printf("environ error\n");
		exit(1);
	}
	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);

	if(argc == 3)
	{
		value = argv[2];
		char* string = 	(char*)malloc(strlen(value) + strlen(var) + 2);
		if(!string)
		{
			printf("string malloc fail\n");
			exit(1);
		}
		strcpy(string,var);
		strcat(string,"=");
		strcat(string,value);
		if(putenv(string) != 0)
		{
			printf("putenv fail\n");
			free(string);
			exit(1);
		}
		else
			printf("Variable %s has been set to %s\n",var,value);
		
		value = getenv(var);
		if(value)
			printf("get new var %s is %s\n",var,value);
		else
			printf("getenv error?????\n");
	}
	exit(0);
}

在这里插入图片描述

#include <stdlib.h>
extern char* environ[];

environ是一个外部变量字符串数组(以NULL结尾),利用这个变量可以直接访问这个字符串数组。

#include <stdlib.h>
#include <stdio.h>
extern char** environ;
int main()
{
	char** env = environ;
	while(*env)
	{
		printf("%s\n",*env);
		env++;
	}
	exit(0);
}	

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值