我正在 Linux 上编写 C 程序,需要执行命令system()
,并且在执行该命令时需要设置环境变量,但我不知道在使用时如何设置环境变量system()
.
如果要将与父进程不同的环境变量传递给子进程,可以使用以下组合getenv and 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 and unsetenv, 像这样:
int main() {
setenv("SOMEVAR", "hello", 1); // Create environment variable
system("echo $SOMEVAR"); // Outputs "hello"
unsetenv("SOMEVAR"); // Clear that variable (optional)
}
当然,不要忘记检查错误代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)