首页 > 系统服务 > 详细

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

时间:2017-01-27 22:58:49      阅读:384      评论:0      收藏:0      [点我收藏+]

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\n", 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;
}

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

原文:http://www.cnblogs.com/5iedu/p/6354027.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!