[使用system()执行命令时如何设置环境变量?

问题描述 投票:3回答:3

我正在Linux上编写C程序,需要使用system()执行命令,并且在执行该命令时需要设置环境变量,但是我不知道如何在使用system()时设置环境变量]。

c linux system
3个回答
3
投票

如果要向子进程传递与父进程不同的环境变量,则可以使用getenvgetenv的组合。假设您想将另一个setenv传递给您的孩子:

setenv

否则,如果您只是创建一个新的环境变量,则可以使用PATH#include <stdlib.h> #include <string.h> int main() { char *oldenv = strdup(getenv("PATH")); // Make a copy of your PATH setenv("PATH", "hello", 1); // Overwrite it system("echo $PATH"); // Outputs "hello" setenv("PATH", oldenv, 1); // Restore old PATH free(oldenv); // Don't forget to free! system("echo $PATH"); // Outputs your actual PATH } 的组合,如下所示:

setenv

当然,不要忘记检查错误代码。


1
投票

这应该起作用:

setenv

输出

EXAMPLE = test


1
投票

使用unsetenv API在Linux中设置环境变量

unsetenv

有关更多信息,请参见int main() { setenv("SOMEVAR", "hello", 1); // Create environment variable system("echo $SOMEVAR"); // Outputs "hello" unsetenv("SOMEVAR"); // Clear that variable (optional) } 。>>

使用#include "stdio.h" int main() { system("EXAMPLE=test env|grep EXAMPLE"); } 设置环境变量后,使用setenv()执行任何命令。

© www.soinside.com 2019 - 2024. All rights reserved.