码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2017-01-27 23:00:38      阅读:566      评论:0      收藏:0      [点我收藏+]

标签:出错   value   roc   lib   char   变量   定义   environ   png   

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)_环境表和环境变量

标签:出错   value   roc   lib   char   变量   定义   environ   png   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!