Поделиться через


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

См. также

Ссылки

Процесс и управление среды

_putenv, _wputenv

Константы среды