PUTENV
Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
putenv - 環境変数の変更または追加
書式
#include <stdlib.h>
int putenv(char *string);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
putenv():
_SVID_SOURCE || _XOPEN_SOURCE
説明
putenv()
関数は、環境変数の追加または値の変更を行う。
引数 string は name=value という形式を取る。
name が環境に存在しない場合は string が環境に追加される。
name が環境に存在する場合は name の値は value に変更される。
string が指している文字列は環境の一部となるので、
文字列を変更すると環境も変更される。
返り値
putenv()
関数は、成功した場合 0 を、
エラーが発生した場合 0 以外を返す。
エラー
- ENOMEM
-
新しい環境を割り当てるのに十分な空きがない。
準拠
SVr4, POSIX.1-2001, 4.3BSD
注意
putenv()
はリエントラントであることを求められていない。
libc4, libc5, glibc 2.0 ではリエントラントではない。
glibc 2.1 ではリエントラントである。
libc4, libc5, glibc に関する説明:
もし引数 string が 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)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:56 GMT, November 19, 2007