在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 */