getenv
, _wgetenv
Geçerli ortamdan bir değer alır. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. getenv_s
, _wgetenv_s
.
Önemli
Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parametreler
varname
Ortam değişkeni adı.
Dönüş değeri
içeren varname
ortam tablosu girdisine yönelik bir işaretçi döndürür. Döndürülen işaretçiyi kullanarak ortam değişkeninin değerini değiştirmek güvenli değildir. _putenv
Bir ortam değişkeninin değerini değiştirmek için işlevini kullanın. Dönüş değeri, ortam tablosunda bulunamazsa varname
olurNULL
.
Açıklamalar
işlevi, getenv
ortam değişkenleri listesinde öğesini arar varname
. getenv
, Windows işletim sisteminde büyük/küçük harfe duyarlı değildir. getenv
ve _putenv
ortama erişmek için genel değişkenin _environ
işaret ettiği ortamın kopyasını kullanın. getenv
yalnızca çalışma zamanı kitaplığı tarafından erişilebilen veri yapılarında çalışır, işletim sistemi tarafından işlem için oluşturulan "segment" ortamında çalışmaz. Bu nedenle, için bağımsız değişkenini envp
main
kullanan veya wmain
geçersiz bilgileri alabilen programlar.
ise varname
NULL
, bu işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL
ayarlanır errno
ve döndürürNULL
.
_wgetenv
, öğesinin getenv
geniş karakterli bir sürümüdür; bağımsız değişkeni ve dönüş değeri _wgetenv
geniş karakterli dizelerdir. Genel _wenviron
değişken, geniş karakterli bir sürümüdür _environ
.
Bir MBCS programında (örneğin, bir SBCS ASCII programında), _wenviron
NULL
başlangıçta ortamın çok baytlı karakter dizelerinden oluşmasıdır. Ardından, ilk çağrısında _wputenv
veya bir (MBCS) ortamı zaten varsa ilk çağrısında _wgetenv
, ilgili geniş karakterli dize ortamı oluşturulur ve ardından tarafından _wenviron
işaret edilir.
Benzer şekilde, bir Unicode (_wmain
) programında _environ
NULL
, başlangıçta ortamın geniş karakter dizelerinden oluşmasıdır. Ardından, ilk çağrısında _putenv
veya bir (Unicode) ortamı zaten varsa ilk çağrısında getenv
, ilgili MBCS ortamı oluşturulur ve ardından tarafından _environ
işaret edilir.
Bir programda ortamın iki kopyası (MBCS ve Unicode) aynı anda mevcut olduğunda, çalışma zamanı sistemi her iki kopyayı da tutarak yürütme süresini yavaşlatmalıdır. Örneğin, her çağırdığınızda_putenv
_wputenv
, çağrısı da otomatik olarak yürütülür, böylece iki ortam dizesi karşılık gelir.
Dikkat
Nadir durumlarda, çalışma zamanı sistemi ortamın hem Unicode sürümünü hem de çok baytlı sürümünü korurken, bu iki ortam sürümü tam olarak karşılık gelmeyebilir. Bunun nedeni, herhangi bir benzersiz çok baytlı karakter dizesinin benzersiz bir Unicode dizesiyle eşlemesine rağmen, benzersiz bir Unicode dizesinden çok baytlı karakterli bir dizeye eşlemenin benzersiz olması gerekmemesidir. Daha fazla bilgi için bkz. _environ
, _wenviron
.
Not
_putenv
ve _getenv
işlev aileleri iş parçacığı açısından güvenli değildir. _getenv
dizeyi değiştirirken _putenv
bir dize işaretçisi döndürebilir ve rastgele hatalara neden olabilir. Bu işlevlere yapılan çağrıların eşitlenmiş olduğundan emin olun.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Ortam değişkeninin TZ
değerini denetlemek veya değiştirmek için, _putenv
_tzset
ve öğesini gerektiği şekilde kullanıngetenv
. hakkında TZ
daha fazla bilgi için, bkz. _tzset
ve _daylight
, timezone
ve _tzname
.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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