1

exec() 関数を使用しようとしましたが、プロセスを開始できる unix/linux 用の関数が必要です:

  1. 作業ディレクトリ
  2. 引数
  3. 重要!LD_PRELOAD などの環境変数

ありがとう!

4

2 に答える 2

4

fork() を実行すると、現在のプロセス (同じ作業ディレクトリ) の複製が取得され、必要なパラメーターを使用して実行できます。これにより、現在のプログラム テキスト (コード) がターゲット実行可能ファイルの内容に置き換えられます。使用方法については「man exec」を、例については google の「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 に答える