Bagikan melalui


getenv, _wgetenv

Mendapatkan nilai dari lingkungan saat ini. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat getenv_s, _wgetenv_s.

Penting

API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.

Sintaks

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

Parameter

varname
Nama variabel lingkungan.

Nilai hasil

Mengembalikan penunjuk ke entri tabel lingkungan yang berisi varname. Tidak aman untuk memodifikasi nilai variabel lingkungan menggunakan penunjuk yang dikembalikan. _putenv Gunakan fungsi untuk mengubah nilai variabel lingkungan. Nilai yang dikembalikan adalah NULL jika varname tidak ditemukan dalam tabel lingkungan.

Keterangan

Fungsi ini getenv mencari daftar variabel lingkungan untuk varname. getenv tidak peka huruf besar/kecil dalam sistem operasi Windows. getenv dan _putenv gunakan salinan lingkungan yang ditujukkan oleh variabel _environ global untuk mengakses lingkungan. getenv hanya beroperasi pada struktur data yang dapat diakses oleh pustaka run-time dan bukan pada lingkungan "segmen" yang dibuat untuk proses oleh sistem operasi. Oleh karena itu, program yang menggunakan argumen ke envp main atau wmain dapat mengambil informasi yang tidak valid.

Jika varname adalah NULL, fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini diatur errno ke EINVAL dan mengembalikan NULL.

_wgetenv adalah versi karakter yang luas dari getenv; argumen dan nilai yang dikembalikan adalah _wgetenv string karakter lebar. Variabel _wenviron global adalah versi karakter luas dari _environ.

Dalam program MBCS (misalnya, dalam program SBCS ASCII), _wenviron awalnya NULL karena lingkungan terdiri dari string karakter multibyte. Kemudian, pada panggilan pertama ke _wputenv, atau pada panggilan pertama ke _wgetenv jika lingkungan (MBCS) sudah ada, lingkungan string karakter lebar yang sesuai dibuat dan kemudian ditujukkan oleh _wenviron.

Demikian pula dalam program _environ Unicode (_wmain), awalnya NULL karena lingkungan terdiri dari string karakter luas. Kemudian, pada panggilan pertama ke _putenv, atau pada panggilan pertama ke getenv jika lingkungan (Unicode) sudah ada, lingkungan MBCS yang sesuai dibuat dan kemudian ditujukkan oleh _environ.

Ketika dua salinan lingkungan (MBCS dan Unicode) ada secara bersamaan dalam suatu program, sistem run-time harus mempertahankan kedua salinan, menghasilkan waktu eksekusi yang lebih lambat. Misalnya, setiap kali Anda memanggil _putenv, panggilan ke _wputenv juga dijalankan secara otomatis, sehingga kedua string lingkungan sesuai.

Perhatian

Dalam instans yang jarang terjadi, ketika sistem run-time mempertahankan versi Unicode dan versi multibyte lingkungan, kedua versi lingkungan ini mungkin tidak sesuai persis. Ini karena, meskipun string karakter multibyte unik memetakan ke string Unicode yang unik, pemetaan dari string Unicode unik ke string karakter multibyte belum tentu unik. Untuk informasi selengkapnya, lihat _environ, _wenviron.

Catatan

Keluarga _putenv fungsi dan _getenv tidak aman utas. _getenv dapat mengembalikan penunjuk string saat _putenv memodifikasi string, menyebabkan kegagalan acak. Pastikan bahwa panggilan ke fungsi-fungsi ini disinkronkan.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tgetenv getenv getenv _wgetenv

Untuk memeriksa atau mengubah nilai TZ variabel lingkungan, gunakan getenv, _putenv dan _tzset seperlunya. Untuk informasi selengkapnya tentang TZ, lihat _tzset dan _daylight, timezone, dan _tzname.

Persyaratan

Rutin Header yang diperlukan
getenv <stdlib.h>
_wgetenv <stdlib.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Lihat juga

Kontrol proses dan lingkungan
_putenv, _wputenv
Konstanta lingkungan