putenv() — 環境変数の変更/追加

フォーマット

#include <stdlib.h>
int putenv(const char *varname);

言語レベル

XPG4

スレッド・セーフ

はい

ジョブ CCSID インターフェース

この関数に送信される文字データは、すべてジョブの CCSID 内にあると想定されます。この関数によって戻された文字データは、すべてジョブの CCSID 内にあります。 詳細については、CCSID およびロケールの理解を参照してください。

説明

putenv() 関数は、既存の変数を変更するか、または新しい変数を作成することにより、環境変数の値を設定します。varname パラメーターは形式 var=x のストリングを指しますが、ここで x は、環境変数 var の新規の値です。

name には、ブランクまたは等号 ( = ) を使用できません。 例えば、次のような場合、
    PATH NAME=/my_lib/joe_user
は無効ですが、これは、PATHNAME の間にブランクがあるためです。 同様に、
    PATH=NAME=/my_lib/joe_user
は無効ですが、これは、PATHNAME の間に等号があるためです。 システムは、最初の等号の後に続くすべての文字を環境変数のとして解釈します。

戻り値

putenv() 関数は、正常に実行された場合には 0 を戻します。失敗した場合、putenv() は -1 を戻し、エラーを示す errno が設定されます。

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
   char *pathvar;
 
   if (-1 == putenv("PATH=/:/home/userid")) {
      printf("putenv failed ¥n");
      return EXIT_FAILURE;
   }
   /* getting and printing the current environment path     */
 
   pathvar = getenv("PATH");
   printf("The current path is: %s¥n", pathvar);
   return 0;
}
 
/**********************************************************
   The output should be:
 
   The current path is: /:/home/userid