我正在Linux上编写C程序,需要使用system()
执行命令,并且在执行该命令时需要设置环境变量,但是我不知道如何在使用system()
时设置环境变量]。
如果要向子进程传递与父进程不同的环境变量,则可以使用getenv
和getenv
的组合。假设您想将另一个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
当然,不要忘记检查错误代码。
这应该起作用:
setenv
输出
EXAMPLE = test
使用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()
执行任何命令。