GETENV, _wgetenv
Obter um valor do ambiente corrente.Versões mais seguras dessas funções estão disponível; consulte getenv_s, _wgetenv_s.
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 da tabela ambiente contendo varname. Não é seguro modificar o valor da variável de ambiente usando o ponteiro retornado.Use o _putenv função para modificar o valor de uma variável de ambiente. O valor retornado é NULL Se varname não foi encontrado na tabela de ambiente.
Comentários
The getenv função na lista de variáveis de ambiente para pesquisa varname. getenv não diferencia maiúsculas e minúsculas no sistema operacional Windows. getenv e _putenv usar a cópia do ambiente apontada pela variável global _environ para acessar o ambiente. getenvfunciona somente com as estruturas de dados acessíveis ao em time de execução biblioteca e não no ambiente de "segmento" criado para o processo pelo sistema operacional. Portanto, os programas que usam o envp argumento para principal or wmain pode recuperar informações inválidas.
If varname é NULL, essa função chama um manipulador de parâmetro inválido, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, essa função define errno para EINVAL e retornos NULL.
_wgetenv é uma versão de caractere largo da getenv; valor de argumento e retornar _wgetenv são seqüências de caracteres largos. The _wenviron variável global é uma versão de caractere largo da _environ.
Em um MBCS programa (por exemplo, em um programa do SBCS ASCII), _wenviron é inicialmente NULL porque o ambiente é composto de seqüências de caractere de multibyte. Em seguida, na primeira telefonar _wputenv, ou na primeira telefonar para _wgetenv Se já existir um ambiente (MBCS), um ambiente de seqüência de caractere largos correspondente é criado e, em seguida, é apontado por _wenviron.
Da mesma forma em um Unicode (_wmain) programa, _environ é inicialmente NULL porque o ambiente é composto de seqüências de caractere largos. Em seguida, na primeira telefonar _putenv, ou na primeira telefonar para getenv Se já existir um ambiente (Unicode), um ambiente MBCS correspondente é criado e, em seguida, é apontado por _environ.
Quando duas cópias do ambiente (MBCS e Unicode) de existem simultaneamente em um programa, o em time de execução sistema deve manter as duas cópias, resultando em menor time de execução.Por exemplo, sempre que você chamar _putenv, uma telefonar para _wputenv também é executada automaticamente, para que as seqüências de caracteres de dois ambiente correspondem.
Cuidado: |
---|
Em raras ocasiões, quando o sistema de time de execução é manter uma versão de Unicode e multibyte versão do ambiente, essas versões do duas ambiente podem não corresponder exatamente.Isso ocorre porque, embora qualquer exclusivo multibyte -seqüência de caractere mapeia para uma seqüência Unicode exclusiva, o mapeamento de uma seqüência de caractere Unicode exclusivo para um multibyte -seqüência de caractere não é necessariamente exclusivo.Para obter mais informações, consulte _environ, _wenviron. |
Observação: |
---|
O _putenv e _getenv famílias de funções não são thread-safe. _getenv pode retornar um ponteiro de seqüência de caracteres ao mesmo tempo _putenv é modificar a seqüência de caracteres, causando falhas aleatórias. Certifique-se de que as chamadas para essas funções estão sincronizadas. |
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Para verificar ou alterar o valor de TZ variável de ambiente, uso getenv, _putenv e _tzset conforme necessário. Para obter mais informações sobre o TZ, consulte _tzset and _daylight, fuso horário e _tzname.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> ou <wchar.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
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 );
}
Original LIB variable is: C:\progra~1\devstu~1\vc\lib New LIB variable is: c:\mylib;c:\yourlib
Equivalente do NET Framework
sistema::ambiente::GetEnvironmentVariable