_putenv
, _wputenv
環境変数を作成、変更、または削除します。 これらの関数のセキュリティを強化したバージョンを使用できます。「_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
」を参照してください。