• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
zuoanddie
博客园    首页    新随笔    联系   管理    订阅  订阅

Linux—环境变量(day09)

目录

一、使用C程序访问环境变量

二、文件输入重定向

三、管道

四、信号


 

一、使用C程序访问环境变量

  系统提供一个全局变量,extern char **environ; 内部存放结构如下

 

1、使用全局变量environ打印系统所有环境变量:

extern char **environ;
int i=0;
while(*(environ+i)!=NULL){
     printf("%s\n",*(environ+i));
     i++;
}

2、使用main(int argc,char *argv,char *envp[])

#include<stdio.h>

int main(int argc,char *argv[],char *envp[]){
     int i=0;
     for(;envp[i]!=NULL;i++){
          printf("%s\n",envp[i]);
     }
     return 0;
}

 3、通过函数操作环境变量

getenv(3)

#include<stdlib.h>

char *getenv(const char *name)

功能:

  获取环境变量的值

参数:

  name:环境变量的名字

返回值:

  没有找到匹配的环境变量:NULL

  成功:环境变量值的首地址

printf("%s\n",getenv(UID));

putenv(3)

#include<stdlib.h>

int putenv(const char *name)

功能:

  改变或增加一个环境变量

参数:

  string:name=value格式的字符串

返回值:

  错误:非0

  成功:0

piutenv("name=pycoming")'
printf("name:%s\n",getenv(name));

name变量只是在此进程中被设置,此进程结束后,无法再查看。

  

clearenv(3)

#include<stdlib.h>

int clearenv(void)

功能:

  清除环境变量

参数:

  void

返回值:

  错误:非0

  成功:0

  例略。

setenv(3)

#include<stdlib.h>

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

功能:

  改变或增加一个环境变量

参数:

  name:环境变量的名字

  value:指定改变环境变量的值

  overwrite:

    0:环境变量的值存在,那么值被改变

    非0:环境变量的值存在,不被改变

返回值:

  错误:-1,errno被设置

  成功:0

 

int unsetenv(const char *name,const char*value,int overwrite)

功能:

  改变或增加一个环境变量

参数:

  name:环境变量的名字

  value:指定改变环境变量的值

  overwrite:

    0:环境变量的值存在,那么值不被改变

    非0:环境变量的值存在,被改变

返回值:

  错误:-1,errno被设置

  成功:0

 带环境变量加载程序:

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

int main(void){
    char *const ps_env[]={"name=tarena",NULL};
    execle("./myenv","myenv",NULL,ps_env);//myenv为打印当前进程环境变量的可执行程序
    return 0;
}

如果不加ps_env,那么子进程就继承父进程的环境变量

posted @ 2019-06-12 00:20  zuoanddie  阅读(329)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3