第5章 进程环境(3)_环境表和环境变量

3. 环境表

(1)每个进程都有一个独立的环境表(字符指针数组)

第5章 进程环境(3)_环境表和环境变量 

(2)初始的环境表继承自父进程

(3)两种访问方式:

  ①int main(int argc, char* argv[], char* envp[]);  //第3个参数

  ②extern char** environ;   //全局变量

4. 环境变量操作函数

(1)getenv:获取环境变量值

头文件

#include<stdlib.h>

函数

char* getenv(const char* name);

返回值

指向与name关联的value的指针,若未找到返回NULL

功能

获取环境变量值

(2)putenv:将形为name=value的字符串放到环境表中

头文件

#include<stdlib.h>

函数

int* putenv(char* str);

返回值

指向与name关联的value的指针,若未找到返回NULL

功能

将形为name=value的字符串,放到环境表中如果name己经存在,则先删除其原来的定义。

(3)setenv:将形为name=value的字符串放到环境表中

头文件

#include<stdlib.h>

函数

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

返回值

成功返回0,出错返回非-1

功能

将name设置为value如果在环境中name己经存在,那么若rewrite为0,则不删除其现存定义(name不设置为新的value,而且也不出错)。

(4)unsetenv:删除指定的环境变量

头文件

#include<stdlib.h>

函数

int* unsetenv(const char* name);

返回值

成功返回0,出错返回非-1

功能

删除name的定义,即使不存在这种定义也不算出错。

【编程实验】设置/删除环境变量和显示环境变量表信息

//process_env.c

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

//获得环境表方式1
extern char** environ; //全局变量
void show_env(char** env)
{
    int i = 0;
    char* curr;
    while((curr = env[i++]) != NULL){
        printf("%sn", curr);
    }
}

//main的第3个参数为环境表指针
int main(int argc, char* argv[], char* envp[])
{
    //利用全局变量获取环境表信息
    //show_env(environ);

    //获得环境表方式2:利用命令行第3个参数envp
    show_env(envp);

    //设置环境变量
    printf("-----------------------------------------n");
    putenv("CITY=shanghai");
    setenv("COMPANY", "horizonStudio", 1);
    show_env(environ);

    //删除环境变量
    printf("-----------------------------------------n");
    unsetenv("CITY");
    show_env(environ);

    return 0;
}

原文链接: https://www.cnblogs.com/5iedu/p/6354027.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    第5章 进程环境(3)_环境表和环境变量

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/393660

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月3日 下午3:18
下一篇 2023年4月3日 下午3:18

相关推荐