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