1

我尝试使用 exec() 函数,但我需要适用于 unix/linux 的函数,它可以通过以下方式启动进程:

  1. 工作目录
  2. 争论
  3. 重要的!环境变量,例如 LD_PRELOAD

谢谢!

4

2 回答 2

4

如果你 fork() 你得到当前进程的副本(所以相同的工作目录),然后你可以使用你需要的参数执行,这会将当前程序文本(代码)替换为目标可执行文件中的内容。尝试使用“man exec”或谷歌“fork exec”作为示例。

例如。

if (fork() == 0) {
  // Child process
  exec("./test", "./test", "-a", NULL); // check the null though
}
// Parent process

希望有帮助

于 2012-12-08T12:03:53.047 回答
0

您可以使用 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
于 2012-12-08T12:21:52.333 回答