Compartilhar via


GETENV, _wgetenv

Obter um valor de ambiente atual.Versões mais seguros dessas funções estão disponíveis; consulte getenv_s, _wgetenv_s.

Observação importanteImportante

Este API não pode ser usado em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas com /ZW.

char *getenv( const char *varname ); wchar_t *_wgetenv( const wchar_t *varname );

Parâmetros

  • varname
    Nome da variável de ambiente.

Valor de retorno

Retorna um ponteiro para a entrada de tabela de ambiente que contém varname.Não é seguro alterar o valor da variável de ambiente usando o ponteiro retornado.Use a função de _putenv para alterar o valor de uma variável de ambiente.O valor de retorno é NULL se varname não for encontrado na tabela de ambiente.

Comentários

A função de getenv procura a lista de variáveis de ambiente por varname.getenv não diferencia maiúsculas de minúsculas no sistema operacional Windows.getenv e _putenv usam a cópia de ambiente apontado pela variável global _environ para acessar o ambiente.getenv funciona somente nas estruturas de dados acessíveis à biblioteca em tempo de execução e não no ambiente “segmento” criado para o processo pelo sistema operacional.Como consequência, os programas que usam o argumento de envp a principal ou a wmain podem recuperar informações inválido.

Se varname é NULL, essa função chama um manipulador de parâmetro inválido, como descrito em Validação de parâmetro.Se a execução é permitida continuar, os conjuntos errno dessa função a EINVAL e retornam NULL.

_wgetenv é uma versão de largo- caractere de getenv; o argumento e o valor de retorno de _wgetenv são cadeias de caracteres de largo- caractere.A variável global de _wenviron é uma versão de largo- caractere de _environ.

Em um programa de MBCS (por exemplo, em um programa ASCII SBCS), _wenviron é inicialmente NULL porque o ambiente é composta de cadeias de caracteres de multibyte- caractere.Em seguida, na primeira chamada a _wputenv, ou na primeira chamada a _wgetenv se um ambiente (MBCS) já existir, um ambiente correspondente da cadeia de caracteres de largo- caractere é criado e então apontado por _wenviron.

Da mesma forma em um programa Unicode (_wmain), _environ é inicialmente NULL porque o ambiente é composta de cadeias de caracteres de largo- caractere.Em seguida, na primeira chamada a _putenv, ou na primeira chamada a getenv se o ambiente de Unicode () já existir, um ambiente correspondente de MBCS é criado e então apontado por _environ.

Quando duas cópias de ambiente (MBCS e Unicode) existem simultaneamente em um programa, o sistema de tempo de execução deve manter as duas cópias, resultando em um tempo de execução mais lentos.Por exemplo, sempre que você chama _putenv, uma chamada a _wputenv é executado também automaticamente, de modo que as duas cadeias de caracteres de ambiente coincidam.

Observação de cuidadoCuidado

Em instâncias raras, quando o sistema de tempo de execução está mantendo uma versão Unicode e uma versão de multibyte de ambiente, essas versões de dois ambientes podem não corresponder exatamente.Isso ocorre porque, embora os mapas exclusivos de cadeia de caracteres de multibyte- caracteres em uma cadeia de caracteres exclusiva Unicode, o mapeamento de uma cadeia de caracteres exclusiva Unicode para uma cadeia de caracteres de multibyte- caractere não são necessariamente exclusivos.Para obter mais informações, consulte _environ, _wenviron.

ObservaçãoObservação

As famílias de _putenv e de _getenv de funções não são com segurança._getenv pode retornar um ponteiro de cadeia de caracteres quando _putenv alterar a cadeia de caracteres, causando falhas aleatórios.Certifique-se de que as chamadas a essas funções são sincronizados.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_tgetenv

getenv

getenv

_wgetenv

Para verificar conforme necessário ou alterar o valor da variável de ambiente TZ , use getenv, de _putenv e de _tzset .Para obter mais informações sobre TZ, consulte _tzset e _daylight, zona de tempo, e _tzname.

Requisitos

Rotina

Cabeçalho necessário

getenv

<stdlib.h>

_wgetenv

<stdlib.h> ou <wchar.h>

Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

Exemplo

// 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 );
}
  

Equivalência do .NET Framework

System::Environment::GetEnvironmentVariable

Consulte também

Referência

Processo e controle do ambiente

_putenv, _wputenv

Constantes ambientais