スポンサーリンク

GETENV(3) FreeBSD ライブラリ関数マニュアル GETENV(3)

名称

getenv, putenv, setenv, unsetenv − 環境変数関数

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <stdlib.h>

char *

getenv(const char *name);

int

setenv(const char *name, const char *value, int overwrite);

int

putenv(const char *string);

void

unsetenv(const char *name);

解説

これらの関数は、環境変数を設定もしくは削除し、またホストの environment list からそれらを取り出します。異なる慣習の環境との互換性のため、与えられ た引数 name および value はそれぞれ、等価記号 ‘‘=’’ によって後に付加する ことも、前に付加することもできます。

getenv() 関数は、環境変数 name の現在の値を取得します。変数 name が現在の 環境にない場合は、null ポインタが返ります。

setenv() 関数は、環境変数 name を現在の環境リストに挿入または再設定しま す。変数 name がリストにない場合は、与えられた value に設定されて挿入され ます。変数が存在する場合は引数 overwrite が検査され、 overwrite が 0 なら ば変数 name は再設定されません。その他の場合は、与えられた値に再設定され ます。

putenv() 関数は、‘‘name=value’’ の形で引数をとります。これは次と等価で す。

      setenv(name, value, 1);

unsetenv() 関数は、 name で示される変数名のインスタンスを、リストからすべ て削除します。

戻り値

関数 setenv() および putenv() は、処理が成功すると値 0 を返します。そうで ない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示しま す。

エラー

       [ENOMEM]

環境にメモリを割り振ることができなかったので、関数 setenv() または putenv() は失敗しました。

関連項目

csh(1), sh(1), execve(2), environ(7)

規格

getenv() 関数は、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合しています。

バグ

異なる大きさの value を同じ name に設定する、連続した setenv() や putenv() の呼び出しは、メモリリークを引き起こします。 FreeBSD のこれらの 関数のセマンティクス (つまり value の内容はコピーされ、その古い値はいつま でもアクセス可能のまま残される) によって、このバグは回避不能です。このバ グを修正するために、将来のバージョンでは、このセマンティクスの保証の一 つ、もしくは両方を削除するかも知れません。

歴史

関数 setenv() および unsetenv() は、 Version 7 AT&T UNIX ではじめて登場し ました。 putenv() 関数は、 4.3BSD−Reno ではじめて登場しました。

FreeBSD 10.0 December 11, 1993 FreeBSD 10.0

スポンサーリンク