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