zoukankan      html  css  js  c++  java
  • 第5章 进程环境(3)_环境表和环境变量

    3. 环境表

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

     

    (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("%s
    ", curr);
        }
    }
    
    //main的第3个参数为环境表指针
    int main(int argc, char* argv[], char* envp[])
    {
        //利用全局变量获取环境表信息
        //show_env(environ);
    
        //获得环境表方式2:利用命令行第3个参数envp
        show_env(envp);
        
        //设置环境变量
        printf("-----------------------------------------
    ");
        putenv("CITY=shanghai");
        setenv("COMPANY", "horizonStudio", 1);
        show_env(environ);
        
        //删除环境变量
        printf("-----------------------------------------
    ");
        unsetenv("CITY");
        show_env(environ);
    
        return 0;
    }
  • 相关阅读:
    define的用法
    MySQL索引使用方法和性能优化
    自己写的一个Js小插件
    .net处理JSON简明教程
    史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
    Python面向对象之-反射
    Python内置函数之classmetho staticmethod
    Python内置函数之-property
    python面向对象三大特性-多态
    python面向对象三大特性之封装
  • 原文地址:https://www.cnblogs.com/5iedu/p/6354027.html
Copyright © 2011-2022 走看看