51

C++ で環境変数を設定するにはどうすればよいですか?

  • 過去のプログラム実行を保持する必要はありません
  • それらは現在のプロセスでのみ表示される必要があります
  • プラットフォーム非依存の設定ですが、私の問題では Win32/64 でのみ動作する必要があります

ありがとう

4

4 に答える 4

60
名前

       putenv - 環境変数を変更または追加する

あらすじ

       #include <stdlib.h>

       int putenv(char *string);

説明
       putenv() 関数は、環境の値を追加または変更します
       変数。引数文字列は、name=value の形式です。名前が
       環境にまだ存在しない場合、文字列が
       環境。name が存在する場合、
       環境が価値に変わります。string が指す文字列は次のようになります。
       環境の一部なので、文字列を変更すると環境が変わります。

Win32 では _putenv と呼ばれていると思います。

長くて醜い関数名が好きなら、SetEnvironmentVariableも参照してください。

于 2009-05-22T19:14:18.777 に答える
3

環境変数は、このプログラムの実行以外では使用されないため、必要なものであることに肯定的ではありません。OS を使用する必要はありません。

これらすべての値を保持するシングルトン クラスまたは名前空間を用意し、プログラムの開始時に初期化する方がよい場合があります。

于 2009-05-22T19:53:00.807 に答える
-1
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{

    char *var, *value;
    if (argc == 1 || argc > 3) {
        fprintf(stderr, "usage:environ variables \n");
        exit(0);
    }
    var = argv[1];
    value = getenv(var);
    //---------------------------------------
    if (value) {
        printf("variable %s has value %s \n", var, value);
    }
    else
        printf("variable %s has no value \n", var);
    //----------------------------------------
    if (argc == 3) {
        char* string;
        value = argv[2];
        string = malloc(strlen(var) + strlen(value) + 2);
        if (!string) {
            fprintf(stderr, "out of memory \n");
            exit(1);
        }
        strcpy(string, var);
        strcat(string, "=");
        strcat(string, value);
        printf("calling putenv with: %s \n", string);
        if (putenv(string) != 0) {
            fprintf(stderr, "putenv failed\n");
            free(string);
            exit(1);
        }
        value = getenv(var);
        if (value)
            printf("New value of %s is %s \n", var, value);
        else
            printf("New value of %s is null??\n", var);
    }
    exit(0);

} //----main
# commands to execure on linux   
# compile:
$ gcc -o myfile myfile.c

# run:
$./myfile xyz
$./myfile abc
$./myfile pqr
于 2011-04-27T11:25:57.510 に答える