getenv, _wgetenv
Mendapat 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 运行时. Untuk informasi selengkapnya, lihat fungsi CRT yang tidak didukung di aplikasi Universelle Windows-Plattform.
Sintaks
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parameter
varname
Nama variabel lingkungan.
Nilai kembali
Mengembalikan penunjuk ke entri tabel lingkungan yang berisi varname. Tidak aman untuk memodifikasi nilai variabel lingkungan menggunakan penunjuk yang dikembalikan. _putenv Gunakan fungsi untuk memodifikasi nilai variabel lingkungan. Nilai pengembalian adalah NULL jika varname tidak ditemukan di tabel lingkungan.
Keterangan
Fungsi ini getenv mencari daftar variabel lingkungan untuk varname. getenvtidak peka huruf besar/kecil dalam sistem operasi Windows. getenv dan _putenv gunakan salinan lingkungan yang ditunjukkan oleh variabel _environ global untuk mengakses lingkungan. getenv hanya beroperasi pada struktur data yang dapat diakses oleh pustaka run-time dan bukan pada "segmen" lingkungan yang dibuat untuk proses oleh sistem operasi. Oleh karena itu, program yang menggunakan envp argumen untuk main atau wmain dapat mengambil informasi yang tidak valid.
Jika varname , NULLfungsi ini memanggil penangan parameter yang tidak valid, seperti yang dijelaskan dalam Validasi Parameter. Jika eksekusi dibiarkan berlanjut, fungsi ini diatur errnoEINVAL dan kembali NULL.
_wgetenv adalah versi karakter lebar dari getenv; argumen dan nilai pengembalian dari _wgetenv string karakter lebar. Variabel _wenviron global adalah versi karakter lebar dari _environ.
Dalam program MBCS (misalnya, dalam program ASCII SBCS), _wenviron pada awalnya NULL karena lingkungan terdiri dari string multibyte-karakter. Kemudian, pada panggilan pertama ke _wputenv, atau pada panggilan pertama jika _wgetenv lingkungan (MBCS) sudah ada, lingkungan string karakter lebar yang sesuai dibuat dan kemudian ditunjukkan oleh _wenviron.
Demikian pula dalam program _environ Unicode (_wmain), pada awalnya NULL karena lingkungan terdiri dari string karakter lebar. Kemudian, pada panggilan pertama ke _putenv, atau pada panggilan pertama jika getenv lingkungan (Unicode) sudah ada, lingkungan MBCS yang sesuai dibuat dan kemudian ditunjukkan oleh _environ.
Ketika dua salinan lingkungan (MBCS dan Unicode) ada secara bersamaan dalam sebuah program, sistem run-time harus mainmempertahankan kedua salinan, menghasilkan waktu eksekusi yang lebih lambat. Misalnya, setiap kali Anda menelepon _putenv, panggilan _wputenv juga dijalankan secara otomatis, sehingga dua string lingkungan sesuai.
Perhatian
Dalam kasus yang jarang terjadi, ketika sistem mainrun-timetaining versi Unicode dan versi multibyte dari lingkungan, kedua versi lingkungan ini mungkin tidak sesuai persis. Ini karena, meskipun setiap string multibyte-karakter yang unik memetakan ke string Unicode yang unik, pemetaan dari string Unicode yang unik ke string multibyte-karakter belum tentu unik. Untuk informasi lebih lanjut, lihat _environ, _wenviron.
Catatan
Dan _putenv_getenv keluarga fungsi tidak aman untuk thread. _getenv bisa mengembalikan pointer string saat _putenv memodifikasi string, menyebabkan kegagalan acak. Pastikan panggilan ke fungsi-fungsi ini disinkronkan.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah ini, lihat Status global di CRT.
Pemetaan Rutin Generic-Text
TCHAR.H Rutin |
_UNICODE&_MBCS tidak didefinisikan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
|---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Untuk memeriksa atau mengubah nilai TZ variabel lingkungan, gunakan getenv, _putenv dan _tzset seperlunya. Untuk informasi lebih lanjut 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 tambahan, 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