_putenv、_wputenv
環境変数を作成、変更、または削除できます。これらの関数のセキュリティを強化したバージョンについては、「_putenv_s、_wputenv_s」を参照してください。
重要 |
---|
この API は、Windows のランタイムで実行するアプリケーションで使用することはできません。詳細については、でサポート /ZW CRT 関数" "を参照してください。 |
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
パラメーター
- envstring
環境文字列定義。
戻り値
0 または–1 をエラーの場合は失敗に返します。
解説
_putenv の関数は、新しい環境変数を追加したり、既存の環境変数の値を変更します。環境変数はプロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) を実装する環境を定義します。_wputenv 関数は、_putenv 関数のワイド文字バージョンです。_wputenv 関数の引数 envstring は、ワイド文字列です。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
envstring の引数は varname を追加する環境変数の名前、または変更されて string が変数の値であるフォーム varname=string文字列へのポインターである必要があります。varname が既に環境の一部である場合、値を stringに置き換えられます; それ以外 varname の新しい変数と string の値は、環境に追加されます。環境から空の 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を参照してください。
[!メモ]
_putenv 系関数と _getenv 系関数はスレッド セーフではありません。_putenv が文字列を変更している間に _getenv が文字列ポインターを返すことがあり、これはランダム エラーの原因になります。これらの関数の呼び出しが同期されていることを確認する必要があります。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
_putenvを使用する方法の例については getenv、_wgetenvを参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。