Manpages

名 前

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() は リ エ ン ト ラ ン ト で あ る こ と を 求 め ら れ て い な い 。 glibc 2.0 で は リ エ ン ト ラ ン ト で は な い 。 glibc 2.1 で は リ エ ン ト ラ ン ト で あ る 。 バ ー ジ ョ ン 2.1.2 以 降 で は 、 glibc の 実 装 は SUSv2 に 準 拠 し て い る 。 putenv() で 与 え ら れ た ポ イ ン タ ー string が 使 わ れ る 。 こ の 文 字 列 は 環 境 の 一 部 と な り 、 後 で 変 更 す る と 環 境 も 変 わ る 。 (従 っ て 、 putenv() を 自 動 変 数 を 引 数 と し て 呼 び 出 し 、 stringが 環 境 の 一 部 の ま ま で 呼 び 出 し た 関 数 か ら return す る と エ ラ ー に な る ) し か し 、 glibc バ ー ジ ョ ン 2.0 か ら 2.1.1 ま で で は 違 っ て お り 、 文 字 列 の コ ピ ー が 使 わ れ る 。 こ れ は メ モ リ ー リ ー ク を 引 き 起 こ す だ け で な く 、 SUSv2 に も 違 反 し て い る 。

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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。