名称
putenv() ― 環境の値の変更、もしくは環境への値の追加
構文
#include <stdlib.h>
int putenv(const char *string);
説明
string は、 name=value の形式の文字列を指します。 putenv() は、既存の変数の変更、または新規の変数の作成によって環境変数 name の値を、 value に等しくします。 いずれの場合でも string で指定された文字列は環境の一部となるので、文字列を変更すれば環境が変わります。
新たに文字列を定義する
name が putenv() に引き渡されると string が使用したスペースは、使用されなくなります。
多言語化対応
ロケール
LC_CTYPE カテゴリは、 string にある文字のコード変換を、シングル/マルチバイト文字として識別します。
サポートされるコードセット
シングル/マルチバイトの文字コードがサポートされています。
診断
putenv() は、拡張された環境に対して、 malloc() により十分なスペースが取得できなかった場合、または文字列引き数の中に、無効なマルチバイト文字があった場合は、0 でない値を返します。取得できた場合は 0 を返します。
エラー
putenv() は次の条件を満たす場合に失敗します。
| [ENOMEM] | | 環境を拡張するために十分なスペースがない場合 |
| [EILSEQ] | | 文字列引き数の中に、無効なマルチバイト文字がある場合 |
警告
putenv() は、 environ で指定された環境を操作し、 getenv() と組み合わせて使用できます。ただし、 main に対する 3 つめの引き数 envp は変更できません。
このルーチンは、 malloc() で環境を拡張します malloc(3C) 参照)。
putenv() が呼び出された後、環境変数はアルファベット順にはなりません。
起こりやすいエラーとしては、自動変数を引き数として putenv() を呼び出し、 string を環境の一部のままにして関数から抜ける、ということがあります。
標準準拠
putenv(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4 1