Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       putenv - 環境変数の変更または追加

書式

       #include <stdlib.h>

       int putenv(char *string);

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       putenv(): _SVID_SOURCE || _XOPEN_SOURCE

説明

       putenv()   関数は、環境変数の追加または値の変更を行う。 引数 stringname=value という形式を取る。 name
       が環境に存在しない場合は string が環境に追加される。 name が環境に存在する場合は name の値は value に変更
       される。 string が指している文字列は環境の一部となるので、 文字列を変更すると環境も変更される。

返り値

       putenv() 関数は、成功すると 0 を返し、エラーの場合は 0 以外の値を返す。エラーが発生した場合、 errno  に原
       因を示す値が設定される。

エラー

       ENOMEM 新しい環境を割り当てるのに十分な空きがない。

準拠

       SVr4, POSIX.1-2001, 4.3BSD.

注意

       putenv()  はリエントラントであることを求められていない。 libc4, libc5, glibc 2.0 ではリエントラントではな
       い。 glibc 2.1 ではリエントラントである。

       libc4,  libc5,  glibc に関する説明: もし引数 stringname 単独で、 '=' 文字を含んでいない場合、環境変数
       name は環境から除去される。  もし  putenv()   が新しい  environ  配列を確保しなければならない時、  以前の
       environ 配列も putenv()  によって確保されたものならば、 それは解放される。 環境変数そのものに割り当てられ
       た古い記憶領域が解放されることはない。

       libc4  と libc5 と glibc 2.1.2 では SUSv2 に準拠している。 putenv()  で与えられたポインタ string が使われ
       る。 この文字列は環境の一部となり、後で変更すると環境も変わる。 (従って、 putenv() を自動変数を引数として
       呼び出し、   stringが環境の一部のままで呼び出した関数から   return   するとエラーになる)    しかし、glibc
       2.0-2.1.1  では異なり、文字列のコピーが使われる。 これはメモリリークを引き起こすだけでなく、 SUSv2 に違反
       している。 これは glibc2.1.2 で修正された。

       4.4BSD バージョンでは、glibc 2.0 と同様にコピーを使う。

       SUSv2 ではプロトタイプから const が取り除かれており、 glibc 2.1.3 もそのようになっている。

関連項目

       clearenv(3), getenv(3), setenv(3), unsetenv(3), environ(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

GNU                                                2013-04-19                                          PUTENV(3)