任何人都知道如何通过 C 程序更改 Linux 环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化。
有小费吗?
任何人都知道如何通过 C 程序更改 Linux 环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化。
有小费吗?
我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序中更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化
你不能。你只能改变你自己进程的环境。你永远无法接触到父母的环境。换句话说,您所做的任何事情(设置/清除环境变量、更改本地目录等)对于父进程都是不可见的。
该标准明确规定:
setenv() 函数应在调用进程的环境中更新或添加变量。
改变父母环境的唯一方法是让它自己去做。
请参阅 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 在他的回答中所说,您只能更改当前进程的环境变量,而不能更改其父进程或其他进程的环境变量。