-2

C プログラムで $PATH を変更しようとしています。このコードの後、PATH 変数を出力しても、同じままです。ここに私のアプローチがあります、

    char path[100]="PATH=";
    char *input = "/newfolder/hello/";
    putenv(strcat(path, input));

echo $PATH を使用して出力しようとしていますが、変更されていないため、以前のパスが表示されます。

4

3 に答える 3

6

設定後に環境変数を取得する方法を教えてください。期待どおりに動作する次の C コードがあります。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char path[100]="PATH=";
    char *input = "/newfolder/hello/";
    putenv(strcat(path, input));

    char* pPath;
    pPath = getenv("PATH");

    printf("%s", pPath);

    return 0;
}

出力は次のとおりです。/newfolder/hello/

echo $PATH を使用して出力しようとしていますが、変更されていないため、以前のパスが表示されます。

プログラムで次のようなものを使用していますか?

system("echo $PATH");

このコマンドは、初期環境変数の設定値をまだ持っているシェルプロセスから実行および評価されるため、設定した値を取得できません。

于 2013-02-25T02:00:13.007 に答える
3

プロセスを開始すると、親の環境のコピーが取得されます。プログラムが終了すると消えるコピーを変更しています。

于 2013-02-25T01:54:05.903 に答える
2

putenv()実行中のプロセスの環境のみを変更します。呼び出しプロセス(シェル)の環境を変更することはできません

于 2013-02-25T01:54:33.217 に答える