2009-05-22 2 views
33

Как установить переменную среды на C++?Установить локальные переменные среды в C++

  • Они не должны сохраняться исполнения ордеров прошлой программы
  • Они только должны быть видны в текущем процессе
  • Предпочтение платформы независимым, но для моей проблемы нужно только работать на Win32/64

Благодаря

ответ

45
 
NAME 

     putenv - change or add an environment variable 

SYNOPSIS 

     #include &ltstdlib.h> 

     int putenv(char *string); 

DESCRIPTION 
     The putenv() function adds or changes the value of environment 
     variables. The argument string is of the form name=value. If name does 
     not already exist in the environment, then string is added to the 
     environment. If name does exist, then the value of name in the 
     environment is changed to value. The string pointed to by string becomes 
     part of the environment, so altering the string changes the environment. 

В Win32 это называется _putenv я верю.

См. Также SetEnvironmentVariable, если вы поклонник длинных и уродливых имен функций.

+4

Примечание для вопросника - putenv также поддерживается в Win32. – 2009-05-22 19:16:45

+19

Можем ли мы использовать правильные имена заголовков C++? подходит (да, я знаю ... это зависание). –

+4

Это как Господь Бог предназначил. – alamar

3

Я не являюсь положительным переменным среды, что вам нужно, поскольку они не будут использоваться за пределами этого запуска программы. Нет необходимости задействовать ОС.

Возможно, вам будет лучше иметь одноэлементный класс или пространство имен, которое содержит все эти значения, и инициализировать их при запуске программы.

+0

Они будут видны только дочерним процессам, а putenv() обычно вообще не нужно разговаривать с ОС. – RBerteig

-2
#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 
*/ 
+8

Как этот код отвечает на вопрос? Почему вы поделились этим с нами? –

+0

Я ожидаю, что ответ будет состоять из (1) файла include и (2) одной строки кода. И, возможно, библиотеку, с которой я должен связаться. – notlesh

+0

notlesh, почему? Также есть инструкции компиляции. Зачем добавлять больше файлов? Я не понимаю, почему это проголосовало. – Owl

 Смежные вопросы

  • Нет связанных вопросов^_^