_putenv_s、_wputenv_s
環境変数を作成、変更、または削除します。 これらは _putenv、_wputenv のバージョンでは、CRT のセキュリティ機能"に説明されているように、セキュリティが強化されたバージョンがあります。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。詳細については、「/ZW でサポートされない CRT 関数」を参照してください。
errno_t _putenv_s(
const char *name,
const char *value
);
errno_t _wputenv_s(
const wchar_t *name,
const wchar_t *value
);
パラメーター
name
環境変数名。value
環境変数が設定される値。
戻り値
正常終了した場合は 0、またはエラー コードを返します。
エラー条件
name |
value |
戻り値 |
---|---|---|
NULL |
任意 |
EINVAL |
任意 |
NULL |
EINVAL |
エラー条件の 1 つが発生する場合、これらの関数は パラメーターの検証"に説明されているように、無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、これらの関数は EINVAL を返し、errno を EINVAL に設定します。
解説
_putenv_s の関数は、新しい環境変数を追加したり、既存の環境変数の値を変更したりします。 環境変数は、プロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) が実行される環境を定義します。 _wputenv_s 関数は、_putenv_s 関数のワイド文字バージョンです。_wputenv_s 関数の引数 envstring は、ワイド文字列です。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE & _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tputenv_s |
_putenv_s |
_putenv_s |
_wputenv_s |
name は 追加する環境変数の名前、または変更されない value は変数の値です。 name が既に環境の一部である場合、値は valueに置き換えられます; それ以外の場合は、変数の新しい name と value が環境に追加されます。 環境から valueに空の文字列 ("") を指定することにより、変数を削除できます。
_putenv_s と _wputenv_s は、現在のプロセスに対してローカルである環境にのみ影響します。したがって、コマンド レベルの環境を変更するためには使用できません。 これらの関数は、ランタイム ライブラリからではなくオペレーティング システムがプロセスで作成した環境「セグメント」でアクセスできるデータ構造でのみ機能します。 現在のプロセスが終了すると、環境はほとんどの場合、オペレーティング システムのレベルにある呼び出しプロセスのレベルに戻ります。 ただし、変更された環境は、_spawn_exec、または systemして作成時に新しいプロセスは _putenv_s_wputenv_sとして追加された新しい項目を取得し、新しいプロセスに渡すことができます。
環境エントリを直接変更しないでください; 代わりに、変更するために _putenv_s または _wputenv_s を使用します。 特に、直接 _environ[] のグローバル配列要素を解放すると、無効なメモリに対処することがあります。
getenv と _putenv_s はグローバル変数 _environ を使用して環境のテーブルにアクセスします。_wgetenv と _wputenv_s は _wenviron を使用します。 _putenv_s と _wputenv_s は _environ と _wenvironの値を変更することもできます。これにより main に envp の引数と wmainに _wenvp 引数を無効にします。 つまり、環境情報へのアクセスに _environ または _wenviron を使用しても安全です。 グローバル変数への _putenv_s と _wputenv_s の関係の詳細については、「_environ、_wenviron」を参照してください。
注意
_putenv_s 系関数と _getenv_s 系関数はスレッド セーフではありません。_getenv_s は _putenv_s が文字列を変更しているときに、それによってエラーの原因のしできます文字列ポインター返します。これらの関数の呼び出しが同期されていることを確認する必要があります。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「互換性」を参照してください。
使用例
_putenv_sの使用方法を参照する getenv_s、_wgetenv_sを示すサンプルについて説明します。
同等の .NET Framework 関数
使用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。