zoukankan      html  css  js  c++  java
  • Linux—环境变量(day09)

    目录

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

    二、文件输入重定向

    三、管道

    四、信号


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

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

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

    extern char **environ;
    int i=0;
    while(*(environ+i)!=NULL){
         printf("%s
    ",*(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
    ",envp[i]);
         }
         return 0;
    }

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

    getenv(3)

    #include<stdlib.h>

    char *getenv(const char *name)

    功能:

      获取环境变量的值

    参数:

      name:环境变量的名字

    返回值:

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

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

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

    putenv(3)

    #include<stdlib.h>

    int putenv(const char *name)

    功能:

      改变或增加一个环境变量

    参数:

      string:name=value格式的字符串

    返回值:

      错误:非0

      成功:0

    piutenv("name=pycoming")'
    printf("name:%s
    ",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,那么子进程就继承父进程的环境变量

  • 相关阅读:
    1348:【例4-9】城市公交网建设问题
    1392:繁忙的都市(city)
    1381:城市路(Dijkstra)
    初识微积分
    进阶数论(1)逆元
    [题解] Codeforces Round #549 (Div. 2) B. Nirvana
    简单数论之整除&质因数分解&唯一分解定理
    [题解]ybt1365:FBI树(fbi)
    [题解]一本通1240:查找最接近的元素
    [题解]NOIP2018(普及组)T1标题统计(title)
  • 原文地址:https://www.cnblogs.com/ptfe/p/11003225.html
Copyright © 2011-2022 走看看