我尝试使用 exec() 函数,但我需要适用于 unix/linux 的函数,它可以通过以下方式启动进程:
- 工作目录
- 争论
- 重要的!环境变量,例如 LD_PRELOAD
谢谢!
如果你 fork() 你得到当前进程的副本(所以相同的工作目录),然后你可以使用你需要的参数执行,这会将当前程序文本(代码)替换为目标可执行文件中的内容。尝试使用“man exec”或谷歌“fork exec”作为示例。
例如。
if (fork() == 0) {
// Child process
exec("./test", "./test", "-a", NULL); // check the null though
}
// Parent process
希望有帮助
您可以使用 execle 或 execvpe 使用参数启动命令并覆盖环境变量(请参阅 man execvpe)。例如:
#include <unistd.h>
int main(int argc, char** argv[]) {
char * const environment[] = {"TOTO=Hello world", NULL};
char * const args[] = {"bash", "-c", "pwd; echo ""TOTO is $TOTO""", NULL};
chdir("/");
execvpe("bash", args, environment);
}
输出
/
TOTO is Hello world