1

任何人都知道如何通过 C 程序更改 Linux 环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化。

有小费吗?

4

2 回答 2

3

我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序中更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化

你不能。你只能改变你自己进程的环境。你永远无法接触到父母的环境。换句话说,您所做的任何事情(设置/清除环境变量、更改本地目录等)对于父进程都是不可见的。

该标准明确规定:

setenv() 函数应在调用进程的环境中更新或添加变量。

改变父母环境的唯一方法是让它自己去做。

于 2012-07-29T14:36:05.587 回答
2

请参阅 POSIX 函数setenvputenv.

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 回答