通过C程序更改环境变量

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

有小费吗?

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

你不能。 您只能更改自己流程的环境 。 你无法触及父母的环境。 换句话说,您执行的任何操作(设置/清除环境变量,更改本地目录等)对于父进程都是不可见的。

该标准明确规定:

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

改变父母环境的唯一方法就是亲自去做。

请参阅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在他的回答中所做的那样,您只能更改当前流程的环境变量,而不能更改其父流程或其他流程。