Как установить переменную среды в C++?
- Им не нужно сохранять прошлое выполнение программы
- Они должны быть видны только в текущем процессе
- Предпочтение не зависит от платформы, но для моей проблемы нужно работать только на Win32/64.
Спасибо
Как установить переменную среды в C++?
Спасибо
NAME putenv - change or add an environment variable SYNOPSIS #include <stdlib.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, если вы любите длинные и некрасивые имена функций. .
putenv
кажется неправильным, поэтому не будет работать с const char *
. setenv
однако есть и будет.
- person Catskul; 06.03.2019
Я не уверен, что вам нужны переменные среды, поскольку они не будут использоваться вне этого запуска программы. Не нужно задействовать ОС.
Возможно, вам лучше иметь одноэлементный класс или пространство имен, которое содержит все эти значения, и инициализировать их при запуске программы.
Также есть setenv
, который немного более гибкий, чем putenv
, в котором setenv
проверяет, установлена ли уже переменная среды, и не перезапишет ее, если вы установите аргумент «перезаписать», указывающий, что вы не хотите его перезаписывать. , а также тем, что имя и значение являются отдельными аргументами для setenv
:
NAME
setenv - change or add an environment variable
SYNOPSIS
#include <stdlib.h>
int setenv(const char *name, const char *value, int overwrite);
int unsetenv(const char *name);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
setenv(), unsetenv():
_POSIX_C_SOURCE >= 200112L
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE
DESCRIPTION
The setenv() function adds the variable name to the environment with
the value value, if name does not already exist. If name does exist
in the environment, then its value is changed to value if overwrite
is nonzero; if overwrite is zero, then the value of name is not
changed (and setenv() returns a success status). This function makes
copies of the strings pointed to by name and value (by contrast with
putenv(3)).
The unsetenv() function deletes the variable name from the
environment. If name does not exist in the environment, then the
function succeeds, and the environment is unchanged.
Я не говорю, что лучше или хуже другого; это просто зависит от вашего приложения.
См. http://man7.org/linux/man-pages/man3/setenv.3.html