GETENV, _wgetenv
Geçerli ortamı bir değer alır. Bu işlevlerin daha güvenli sürümlerinde kullanılabilir; see getenv_s, _wgetenv_s.
Önemli
Bu API, Windows çalışma zamanı yürütme uygulamalarda kullanılamaz.Daha fazla bilgi için bkz: /zw ile desteklenmeyen crt işlevlerinin.
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parametreler
- varname
Ortam değişkeni adı.
Dönüş Değeri
Ortam tabloyu içeren giriş işaretçi döndüren varname. Döndürülen işaretçi kullanarak ortam değişkeninin değerini değiştirmek güvenli değil. Kullanım _putenv bir ortam değişkeninin değerini değiştirmek için işlev. Dönüş değeri NULL , varname ortamı tablosunda bulunamadı.
Notlar
getenv İşlev için ortam değişkenleri listesini arar varname. getenvWindows işletim sistemi büyük/küçük harf duyarlı değildir. getenvve _putenv kullanmak için genel bir değişken tarafından işaret edilen ortamın kopyasını _environ ortama erişmek için. getenvyalnızca çalışma zamanı kitaplığı'na erişilebilir veri yapıları ve "işlem için işletim sistemi tarafından oluşturulan kesim" ortam üzerinde çalışır. Bu nedenle, kullanan programlar envp bağımsız değişkeni ana veya wmain geçersiz bilgiler alabilir.
varname Olan NULL, bir geçersiz parametre işleyicisi açıklandığı gibi bu işlevi çağırır Parametre doğrulama. Bu işlev yürütülmesine devam etmek için izin verilirse, ayarlar errno için EINVAL ve NULL.
_wgetenvgeniş karakter sürümü getenv; yazmaç değeri _wgetenv geniş karakter dizeleridir. _wenviron Genel değişkeni bir geniş karakter sürümü olan _environ.
mbcs programında (örneğin, bir programda sbcs ASCII), _wenviron başlangıçta olan NULL ortamı çok baytlı karakter dizeleri oluşur çünkü. Daha sonra ilk çağrı _wputenv, ya da ilk çağrı _wgetenv (mbcs) ortam zaten varsa, karşılık gelen bir geniş karakter dizeli ortam oluşturulur ve sonra tarafından gösterilir _wenviron.
Benzer şekilde, bir Unicode (_wmain) programı, _environ başlangıçta olan NULL ortamı geniş karakter dizeleri oluşur çünkü. Daha sonra ilk çağrı _putenv, ya da ilk çağrı getenv (Unicode) ortam zaten varsa, karşılık gelen bir mbcs ortamı oluşturulur ve sonra tarafından gösterilir _environ.
Bir programı aynı anda iki kopyası (mbcs ve Unicode) ortamı var, daha yavaş yürütme süresi içinde sonuçlanan her iki kopya, çalışma zamanı sistemi tutmalıdır. Örneğin, çağrılacak _putenv, çağrı _wputenv , böylece iki ortam dizeleri karşılık da otomatik olarak yürütülür.
Uyarı
Çalışma zamanı sistemi hem Unicode sürümü hem de ortam çok baytlı bir sürümünü korurken ender durumlarda, bu iki ortam sürümleri tam olarak karşılık gelmeyebilir.Bu, herhangi bir benzersiz çok baytlı karakter dizesi için benzersiz bir Unicode dize eşlemeleri de benzersiz bir Unicode dize eşleme çok baytlı karakter dizesi benzersiz olmak zorunda değildir çünkü.Daha fazla bilgi için bkz: _environ, _wenviron.
Not
_putenv Ve _getenv işlevlerinin aileleri iş parçacığı açısından güvenli değildir._getenvdize işaretçisi hata döndürmesine neden _putenv rasgele hatalarına neden dize değiştirme.Bu işlevlere olan çağrıları eşzamanlı olduğundan emin olun.
Genel metin eşlemeleri yordamına girildi
TCHAR.H yordamına girildi |
_UNICODE & _mbcs tanımlanmamış |
Tanımlanan _mbcs |
Tanımlanan _UNICODE |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Denetlemek veya değerini değiştirmek için TZ ortam değişkeni, kullanım getenv, _putenv ve _tzset gerekli. Hakkında daha fazla bilgi için TZ, bkz: _tzset ve _daylight, saat dilimi ve _tzname.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> veya <wchar.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Ö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 );
}
.NET Framework Eşdeğeri
System::Environment::GetEnvironmentVariable