在C ++中设置本地环境variables

如何在C ++中设置环境variables?

  • 他们不需要坚持过去的程序执行
  • 他们只需要在当前进程中可见
  • 偏好平台独立,但我的问题只需要在Win32 / 64上工作

谢谢

    名称
    
            putenv  - 更改或添加一个环境variables
    
    概要
    
            #include&ltstdlib.h>
    
            int putenv(char * string);
    
    描述
            putenv()函数添加或更改环境的值
           variables。 参数string的forms为name = value。 如果名字的话
           在环境中已经不存在了,那么string就被添加到了
           环境。 如果名字确实存在,那么名字的值在
           环境改变为价值。 string指向的string变为
           环境的一部分,所以改变string改变了环境。
    

    在Win32上它被称为_putenv我相信。

    如果你是一个长而丑陋的函数名称的粉丝,请参阅SetEnvironmentVariable 。

    我不是积极的环境variables是你所需要的,因为它们不会被用在这个程序运行之外。 无需使用操作系统。

    你可能最好有一个单独的类或一个名字空间来保存所有这些值,并在启动程序时对它们进行初始化。

    #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h> main(int argc,char *argv[]) { char *var,*value; if(argc==1||argc>3) { fprintf(stderr,"usage:environ variables \n"); exit(0); } var=argv[1]; value=getenv(var); //--------------------------------------- if(value) { printf("variable %s has value %s \n",var,value); } else printf("variable %s has no value \n",var); //---------------------------------------- if(argc==3) { char *string; value=argv[2]; string=malloc(strlen(var)+strlen(value)+2); if(!string) { fprintf(stderr,"out of memory \n"); exit(1); } strcpy(string,var); strcat(string,"="); strcat(string,value); printf("calling putenv with: %s \n",string); if(putenv(string)!=0) { fprintf(stderr,"putenv failed\n"); free(string); exit(1); } value=getenv(var); if(value) printf("New value of %s is %s \n",var,value); else printf("New value of %s is null??\n",var); } exit(0); }//----main /* commands to execure on linux compile:- $gcc -o myfile myfile.c run:- $./myfile xyz $./myfile abc $./myfile pqr */