環境変数を作成、変更、または削除します。 これらの関数のセキュリティを強化したバージョンを使用できます。「_putenv_s、_wputenv_s」を参照してください。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。
構文
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
パラメーター
envstring
環境文字列定義。
戻り値
関数は成功した場合は 0 を返し、エラーがある場合は -1 を返します。
解説
_putenv の関数は、新しい環境変数を追加したり、既存の環境変数の値を変更したりします。 環境変数は、プロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) が実行される環境を定義します。 _wputenv 関数は、 _putenv関数のワイド文字バージョンです。 envstring 関数の引数 _wputenv は、ワイド文字列です。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
Tchar.h ルーチン |
_UNICODE and _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
|---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
envstring 引数は varname=value_string 形式の文字列へのポインターである必要があります。ここで、varname は、追加または変更される環境変数の名前であり、value_string は変数の値です。 varname が既に環境の一部である場合、値が value_string に置き換えられます。そうでない場合は、新しい varname 変数とその value_string の値が環境に追加されます。 環境から変数を削除するには、空の value_stringを指定するか、つまり varname= のみを指定します。
_putenv_wputenv現在のプロセスに対してローカルな環境にのみ影響します。コマンド レベルの環境を変更するために使用することはできません。 つまり、これらの関数は、ランタイム ライブラリからアクセスできるデータ構造でのみ動作します。 オペレーティング システムによってプロセス用に作成された環境セグメントでは動作しません。 現在のプロセスが終了すると、環境は、呼び出し元プロセス (ほとんどの場合、オペレーティング システムのレベル) のレベルに戻ります。 ただし、変更された環境は _spawn、_exec、または system で作成された新しいプロセスに渡すことができ、これらの新しいプロセスは _putenv と _wputenv が追加した新しい項目を取得します。
環境のエントリを直接変更しないでください。代わりに、_putenv または _wputenv を使用して変更します。 特に、_environ[] グローバル配列の要素を直接の解放すると、無効なメモリ アドレスを生成する可能性があります。
_getenv と _putenv はグローバル変数 _environ を使用して環境のテーブルにアクセスします。_wgetenv と _wputenv は _wenviron を使用します。 _putenv と _wputenv によって _environ と _wenviron の値が変更されるために、main の _envp 引数と wmain の _wenvp 引数が無効になることがあります。 そのため、環境情報へのアクセスには _environ または _wenviron を使用した方が安全です。 _putenv および _wputenv とグローバル変数との関係の詳細については、「_environ、_wenviron」をご覧ください。
Note
_putenv 系関数と _getenv 系関数はスレッド セーフではありません。 _getenv が文字列を変更している間に _putenv が文字列ポインターを返すことがあり、これはランダム エラーの原因になります。 これらの関数の呼び出しが同期されていることを確認する必要があります。
要件
| ルーチンによって返される値 | 必須ヘッダー |
|---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
_putenv の使用方法のサンプルについては、「getenv、_wgetenv」を参照してください。