C/C++编程:获取设置删除环境变量

1059 篇文章 285 订阅

c语言总是从main函数开始执行。

int main(int argc, char *argv[])

当内核执行C程序时(通过使用一个exec),会先调用一个特殊的启动例程,作为程序的起始地址。启动例程将从内核取得命令行参数和环境变量值

每个程序都接收到一张环境表,全局变量environ则包含了该指针数组的地址
在这里插入图片描述

打印环境变量

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int			i;
    char		**ptr;
    extern char	**environ;

    for (i = 0; i < argc; i++)		/* echo all command-line args */
        printf("argv[%d]: %s\n", i, argv[i]);

    for (ptr = environ; *ptr != 0; ptr++)	/* and all env strings */
        printf("%s\n", *ptr);

    exit(0);
}

获取设置删除环境变量

#include <stdlib.h>
/*
* 功能:C 库函数 char *getenv(const char *name) 搜索 name 所指向的环境字符串,并返回相关的值给字符串。
* 参数: name -- 包含被请求变量名称的 C 字符串。
* 返回值:该函数返回一个以 null 结尾的字符串,该字符串为被请求环境变量的值。如果该环境变量不存在,则返回 NULL。
* 函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。getenv函数的返回值存储在一个全局二维数组里,当你再次使用getenv函数时不用担心会覆盖上次的调用结果。

*/
char *getenv(const char *name)
/*
* 函数说明:putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
* 返回值:执行成功则返回0,有错误发生则返回-1。
* 错误代码:ENOMEM 内存不足,无法配置新的环境变量空间。
* 作用域:只在本进程内有效
*/
int putenv(const char * string);


/*
* 函数说明 : setenv()用来改变或增加环境变量的内容。
*  参数:  name为环境变量名称字符串。
*        value则为变量内容。
*        overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,则改变环境变量原有内容,原有内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
* 作用域:只在本进程内有效
* 返回值 执行成功则返回0,有错误发生时返回-1。
*/


 int setenv(const char *name,const char * value,int overwrite);

/*
* 作用:删除name的定义,即使不存在也不算出错
**/
int unsetenv(const char *name);
#include <stdio.h>
#include <stdlib.h>

int main ()
{
   printf("PATH : %s\n", getenv("PATH"));
   printf("HOME : %s\n", getenv("HOME"));
   printf("ROOT : %s\n", getenv("ROOT"));

   return(0);
}

在这里插入图片描述

#include<stdlib.h>
#include<stdio.h>

int main()
{
    char  *p;

    if ((p = getenv("USER")))
        printf("USER =%s\n",p);

    putenv("USER=test");
    printf("USER=%s\n",getenv("USER"));
    return 0;
}

在这里插入图片描述

#include<stdlib.h>
#include <stdio.h>
main()
{
    char * p;
    if((p=getenv("USER")))
        printf("USER =%s\n",p);

    setenv("USER","test",1);

    printf("USER=%s\n",getenv("USER"));
    unsetenv("USER");
    printf("USER=%s\n",getenv("USER"));
}

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值