1

Cプログラムを使用してLinux環境変数を変更する方法を知っている人はいますか? そのプログラムの実行のためにコピーされる環境変数を変更したくありません。Cプログラムから値を変更できるようにしたいのですが、Linuxでコマンド「env」を実行すると、値が変更されていることがわかります。

任意のヒント?

4

2 に答える 2

3

そのプログラムの実行のためにコピーされる環境変数を変更したくありません。Cプログラムから値を変更できるようにしたいのですが、Linuxでコマンド「env」を実行すると、値が変更されたことがわかります。

できません。自分のプロセスの環境のみを変更できます。親の環境に触れる方法はありません。言い換えると、あなたが行うこと(環境変数の設定/クリア、ローカルディレクトリの変更など)は、親プロセスからは見えなくなります。

規格は明確に述べています:

setenv()関数は、呼び出し元のプロセスの環境で変数を更新または追加する必要があります。

親の環境を変える唯一の方法は、それを自分でやらせることです。

于 2012-07-29T14:36:05.587 に答える
2

POSIX関数setenvおよび を参照してくださいputenv

setenv http://pubs.opengroup.org/onlinepubs/009604599/functions/setenv.html

putenv http://pubs.opengroup.org/onlinepubs/009604599/functions/putenv.html

POSIXが言うように、setenv()関数はこの関数よりも優先されます。(putenv)

そのプログラムの実行のためにコピーされる環境変数を変更したくありません。

@cnicutarが彼の答えに書いているように、現在のプロセスの環境変数のみを変更でき、その親プロセスや別のプロセスの環境変数は変更できません。

于 2012-07-29T14:33:44.330 に答える