.\" Updated 2005-11-19, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\"
.TH PUTENV 3 2007-07-26 "GNU" "Linux Programmer's Manual"
-.SH ̾Á°
-putenv \- ´Ä¶ÊÑ¿ô¤ÎÊѹ¹¤Þ¤¿¤ÏÄɲÃ
-.SH ½ñ¼°
+.SH 名前
+putenv \- 環境変数の変更または追加
+.SH 書式
.nf
.B #include <stdlib.h>
.sp
.fi
.sp
.in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
+glibc 向けの機能検査マクロの要件
.RB ( feature_test_macros (7)
-»²¾È):
+参照):
.in
.sp
.BR putenv ():
_SVID_SOURCE || _XOPEN_SOURCE
\"O .SH DESCRIPTION
-.SH ÀâÌÀ
+.SH 説明
.BR putenv ()
-´Ø¿ô¤Ï¡¢´Ä¶ÊÑ¿ô¤ÎÄɲäޤ¿¤ÏÃͤÎÊѹ¹¤ò¹Ô¤¦¡£
-°ú¿ô \fIstring\fP ¤Ï \fIname\fP=\fIvalue\fP ¤È¤¤¤¦·Á¼°¤ò¼è¤ë¡£
-\fIname\fP ¤¬´Ä¶¤Ë¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï \fIstring\fP ¤¬´Ä¶¤ËÄɲ䵤ì¤ë¡£
-\fIname\fP ¤¬´Ä¶¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ï \fIname\fP ¤ÎÃÍ¤Ï \fIvalue\fP ¤ËÊѹ¹¤µ¤ì¤ë¡£
-\fIstring\fP ¤¬»Ø¤·¤Æ¤¤¤ëʸ»úÎó¤Ï´Ä¶¤Î°ìÉô¤È¤Ê¤ë¤Î¤Ç¡¢
-ʸ»úÎó¤òÊѹ¹¤¹¤ë¤È´Ä¶¤âÊѹ¹¤µ¤ì¤ë¡£
-.SH ÊÖ¤êÃÍ
+関数は、環境変数の追加または値の変更を行う。
+引数 \fIstring\fP は \fIname\fP=\fIvalue\fP という形式を取る。
+\fIname\fP が環境に存在しない場合は \fIstring\fP が環境に追加される。
+\fIname\fP が環境に存在する場合は \fIname\fP の値は \fIvalue\fP に変更される。
+\fIstring\fP が指している文字列は環境の一部となるので、
+文字列を変更すると環境も変更される。
+.SH 返り値
.BR putenv ()
-´Ø¿ô¤Ï¡¢À®¸ù¤·¤¿¾ì¹ç 0 ¤ò¡¢
-¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç 0 °Ê³°¤òÊÖ¤¹¡£
-.SH ¥¨¥é¡¼
+関数は、成功した場合 0 を、
+エラーが発生した場合 0 以外を返す。
+.SH ã\82¨ã\83©ã\83¼
.TP
.B ENOMEM
-¿·¤·¤¤´Ä¶¤ò³ä¤êÅö¤Æ¤ë¤Î¤Ë½½Ê¬¤Ê¶õ¤¤¬¤Ê¤¤¡£
-.SH ½àµò
+新しい環境を割り当てるのに十分な空きがない。
+.SH 準拠
SVr4, POSIX.1-2001, 4.3BSD.
-.SH Ãí°Õ
+.SH 注意
.BR putenv ()
-¤Ï¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤¢¤ë¤³¤È¤òµá¤á¤é¤ì¤Æ¤¤¤Ê¤¤¡£
-libc4, libc5, glibc 2.0 ¤Ç¤Ï¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤Ï¤Ê¤¤¡£
-glibc 2.1 ¤Ç¤Ï¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤¢¤ë¡£
+はリエントラントであることを求められていない。
+libc4, libc5, glibc 2.0 ではリエントラントではない。
+glibc 2.1 ではリエントラントである。
.LP
-libc4, libc5, glibc ¤Ë´Ø¤¹¤ëÀâÌÀ:
-¤â¤·°ú¿ô \fIstring\fP ¤¬ \fIname\fP ñÆȤǡ¢
-\(aq=\(aq ʸ»ú¤ò´Þ¤ó¤Ç¤¤¤Ê¤¤¾ì¹ç¡¢´Ä¶ÊÑ¿ô \fIname\fP ¤Ï´Ä¶¤«¤é½üµî¤µ¤ì¤ë¡£
-¤â¤·
+libc4, libc5, glibc に関する説明:
+もし引数 \fIstring\fP が \fIname\fP 単独で、
+\(aq=\(aq 文字を含んでいない場合、環境変数 \fIname\fP は環境から除去される。
+もし
.BR putenv ()
-¤¬¿·¤·¤¤ \fIenviron\fP ÇÛÎó¤ò³ÎÊݤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤»þ¡¢
-°ÊÁ°¤Î \fIenviron\fP ÇÛÎó¤â
+が新しい \fIenviron\fP 配列を確保しなければならない時、
+以前の \fIenviron\fP 配列も
.BR putenv ()
-¤Ë¤è¤Ã¤Æ³ÎÊݤµ¤ì¤¿¤â¤Î¤Ê¤é¤Ð¡¢
-¤½¤ì¤Ï²òÊü¤µ¤ì¤ë¡£
-´Ä¶ÊÑ¿ô¤½¤Î¤â¤Î¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¸Å¤¤µ²±Îΰ褬²òÊü¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£
+によって確保されたものならば、
+それは解放される。
+環境変数そのものに割り当てられた古い記憶領域が解放されることはない。
.LP
-libc4 ¤È libc5 ¤È glibc 2.1.2 ¤Ç¤Ï SUSv2 ¤Ë½àµò¤·¤Æ¤¤¤ë¡£
+libc4 と libc5 と glibc 2.1.2 では SUSv2 に準拠している。
.BR putenv ()
-¤ÇÍ¿¤¨¤é¤ì¤¿¥Ý¥¤¥ó¥¿ \fIstring\fP ¤¬»È¤ï¤ì¤ë¡£
-¤³¤Îʸ»úÎó¤Ï´Ä¶¤Î°ìÉô¤È¤Ê¤ê¡¢¸å¤ÇÊѹ¹¤¹¤ë¤È´Ä¶¤âÊѤï¤ë¡£
-(½¾¤Ã¤Æ¡¢
+で与えられたポインタ \fIstring\fP が使われる。
+この文字列は環境の一部となり、後で変更すると環境も変わる。
+(従って、
.BR putenv ()
-¤ò¼«Æ°ÊÑ¿ô¤ò°ú¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤·¡¢
-\fIstring\fP¤¬´Ä¶¤Î°ìÉô¤Î¤Þ¤Þ¤Ç¸Æ¤Ó½Ð¤·¤¿´Ø¿ô¤«¤é return ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ë)
-¤·¤«¤·¡¢glibc 2.0-2.1.1 ¤Ç¤Ï°Û¤Ê¤ê¡¢Ê¸»úÎó¤Î¥³¥Ô¡¼¤¬»È¤ï¤ì¤ë¡£
-¤³¤ì¤Ï¥á¥â¥ê¥ê¡¼¥¯¤ò°ú¤µ¯¤³¤¹¤À¤±¤Ç¤Ê¤¯¡¢ SUSv2 ¤Ë°ãÈ¿¤·¤Æ¤¤¤ë¡£
-¤³¤ì¤Ï glibc2.1.2 ¤Ç½¤Àµ¤µ¤ì¤¿¡£
+を自動変数を引数として呼び出し、
+\fIstring\fPが環境の一部のままで呼び出した関数から return するとエラーになる)
+しかし、glibc 2.0-2.1.1 では異なり、文字列のコピーが使われる。
+これはメモリリークを引き起こすだけでなく、 SUSv2 に違反している。
+これは glibc2.1.2 で修正された。
.LP
-4.4BSD ¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢glibc 2.0 ¤ÈƱÍͤ˥³¥Ô¡¼¤ò»È¤¦¡£
+4.4BSD バージョンでは、glibc 2.0 と同様にコピーを使う。
.LP
-SUSv2 ¤Ç¤Ï¥×¥í¥È¥¿¥¤¥×¤«¤é \fIconst\fP ¤¬¼è¤ê½ü¤«¤ì¤Æ¤ª¤ê¡¢
-glibc 2.1.3 ¤â¤½¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
+SUSv2 ではプロトタイプから \fIconst\fP が取り除かれており、
+glibc 2.1.3 もそのようになっている。
+.SH 関連項目
.BR clearenv (3),
.BR getenv (3),
.BR setenv (3),