Aracılığıyla paylaş


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 varnameortam 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 getenvgeniş 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 _wputenvveya bir (MBCS) ortamı zaten varsa ilk çağrısında _wgetenv , ilgili geniş karakterli dize ortamı oluşturulur ve ardından tarafından _wenvironiş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 _putenvveya bir (Unicode) ortamı zaten varsa ilk çağrısında getenv , ilgili MBCS ortamı oluşturulur ve ardından tarafından _environiş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 TZdaha fazla bilgi için, bkz. _tzset ve _daylight, timezoneve _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

Ayrıca bkz.

İşlem ve ortam denetimi
_putenv, _wputenv
Ortam sabitleri