getenv, _wgetenv
Получение значения из окружающей среды в данный момент.Существуют более безопасные версии этих функций; см. раздел getenv_s, _wgetenv_s.
Важно |
---|
Этот API нельзя использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в разделе Функции CRT не поддерживаются при /ZW. |
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Параметры
- varname
Имя переменной среды.
Возвращаемое значение
Возвращает указатель на записи таблицы среды, содержащий varname.Небезопасно изменить значение переменной среды с помощью возвращает указатель.Используйте функцию _putenv, чтобы изменить значение переменной среды.Возвращаемое значение NULL, если varname не найден в таблице среды.
Заметки
Функция getenv выполняет список переменных среды для varname.getenv не учитывает регистр в операционной системе Windows.getenv и _putenv используют копию среды указанную в глобальной переменной _environ для получения среды.getenv работает только в структурах данных, доступных в библиотеке времени выполнения, а не в среду "сегмент" созданном для процесса операционной системой.Поэтому программ, использующих аргумент envp в main или wmain могут извлекать недопустимую информацию.
Если varname имеет значение NULL, то эта функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если продолжение выполнения разрешено, функция устанавливает errno в EINVAL и возвращает NULL.
_wgetenv — это двухбайтовая версия функции getenv; аргумент и возвращаемое значение _wgetenv являются строками двухбайтовых символов.Глобальная переменная _wenviron версия юникод _environ.
В программе многобайтовой кодировки (например, в программе ASCII однобайтовой кодировки), _wenviron - NULL, поскольку среда состоит из строк многобайтовой кодировки.Затем, при первом вызове функции _wputenv, или _wgetenv, если среда многобайтовой кодировки () уже существует, среда является черты создается и затем указана в _wenviron.
Аналогично в программе юникода (_wmain), _environ - NULL, поскольку среда состоит из характерных черт.Затем, при первом вызове функции _putenv, или getenv, если среда a (юникод) уже существует, среда многобайтовой кодировки создается и затем указана в _environ.
2 Если копии среды (многобайтовая кодировка юникод) и существуют одновременно в программе, время выполнения система должна поддерживать обе копии, и в более медленном времени выполнения.Например, при вызове _putenv, вызов _wputenv также выполняется автоматически, поэтому 2 строки среды совпадают.
Внимание |
---|
В редких случаях, когда во время выполнения система поддерживает и версию юникода и версию многобайтовой среды, эти версии 2 среды могут не соответствовать точно.Это происходит потому, что, хотя есть уникальный сопоставления строк многобайтовой кодировки однозначно строке юникода, сопоставление из уникального строки юникода в строке многобайтовой кодировки не обязательно должны быть уникальными.Дополнительные сведения см. в разделе _environ, _wenviron. |
Примечание |
---|
Семейство функций _putenv и _getenv не является потокобезопасным._getenv может вернуть указатель строки при _putenv изменяет строку, вызывая случайным сбоям.Убедитесь, что вызов этих функций синхронизированы. |
Универсальное текстовое сопоставление функций
Функция TCHAR.H |
неопределенные _UNICODE & _MBCS |
определенные _MBCS |
Определение _UNICODE |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Проверка или изменение значения переменной среды TZ, используйте getenv, _putenv и _tzset по мере необходимости.Дополнительные сведения о TZ см. в разделах _tzset и _daylight, часовой пояс, и _tzname.
Требования
Функция |
Требуемый заголовок |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Пример
// crt_getenv.c
// compile with: /W3
// This program uses getenv to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *libvar;
// Get the value of the LIB environment variable.
libvar = getenv( "LIB" ); // C4996
// Note: getenv is deprecated; consider using getenv_s instead
if( libvar != NULL )
printf( "Original LIB variable is: %s\n", libvar );
// Attempt to change path. Note that this only affects the environment
// variable of the current process. The command processor's
// environment is not changed.
_putenv( "LIB=c:\\mylib;c:\\yourlib" ); // C4996
// Note: _putenv is deprecated; consider using putenv_s instead
// Get new value.
libvar = getenv( "LIB" ); // C4996
if( libvar != NULL )
printf( "New LIB variable is: %s\n", libvar );
}
Эквивалент в .NET Framework
System::Environment::GetEnvironmentVariable