SETENV
Section: Linux Programmer's Manual (3)
Updated: 2009-09-20
Index
JM Home Page
roff page
名前
setenv - 環境変数を変更または追加する
書式
#include <stdlib.h>
int setenv(const char *name, const char *value, int overwrite);
int unsetenv(const char *name);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
setenv(),
unsetenv():
_BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
説明
setenv()
関数は、name が存在しない場合
環境変数 name に値 value を設定し、環境に追加する。
name が環境に存在する場合、overwrite が 0 以外ならば
その値を value に変更し、overwrite が 0 ならば
name の値を変更しない。
この関数は、
(putenv(3)
と違い)
name
と
value
により参照される文字列のコピーを行う。
unsetenv()
関数は、変数 name を環境から削除する。
name
が環境にない場合、この関数は成功し、環境は変更されない。
返り値
setenv()
関数は、成功すると 0 を返す。
エラーの場合、-1 を返し、
errno
にエラーの原因を示す値がセットされる。
unsetenv()
関数は、成功すると 0 を返す。
エラーの場合は -1 を返し、
errno
を設定してエラーの原因を示す。
エラー
- EINVAL
-
name
が NULL であるか、長さが 0 の文字列を指しているか、
aq=aq 文字が含まれている。
- ENOMEM
-
環境に新しい変数を追加するのに十分なメモリがない。
準拠
4.3BSD, POSIX.1-2001.
注意
POSIX.1-2001 は、
setenv()
や
unsetenv()
がリエントラント (再入可能) であることを要求していない。
glibc 2.2.2 以前では、
unsetenv()
は
返り値が void のプロトタイプであった。
もっと最近の glibc 版は、「書式」セクションで示しているように
POSIX.1-2001 互換のプロトタイプである。
バグ
POSIX.1-2001 では
「name
に aq=aq 文字が含まれる場合、
setenv()
はエラー
EINVAL
で失敗すべきである」と述べられている。
しかし 2.3.4 より前のバージョンの glibc では、
name
に aq=aq 文字が含まれるのを許している。
関連項目
clearenv(3),
getenv(3),
putenv(3),
environ(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 03:26:54 GMT, April 25, 2010