私は対応が遅れてんだけど、ここで私はそれを行う方法です。
const char *progname = "./yourProgName";
const char *argument1 = "arg1";
const char *argument2 = "arg2";
if (fork() == 0)
{
// We are the child process, so replace the process with a new executable.
execl(progname, progname, argument1, argument2, (char *)NULL);
}
// The parent process continues from here.
まず、あなたは()新しいプロセスを作成するためのプロセスをフォーク。それはまだ古いものと同じメモリ空間を持っています。 fork()は、親プロセスと子プロセスの両方を返します。 fork()がゼロを返す場合、あなたは子プロセスです。子プロセスはexecl()を使用してプロセスメモリを新しいファイルのものに置き換えます。
prognameがexecl()に2回指定されていることに注意してください。最初はexecl()が実際に実行しようとするもので、2番目はargv [0]です。あなたは両方を提供しなければならないか、引数の数が1つ減ってしまいます。 Prognameには、必要な実行可能イメージを見つけるために必要なすべてのパス情報が含まれている必要があります。
この例では2つの引数を指定しますが、必要な数だけ渡すことができます。それはNULLで終了する必要があり、私はあなたがそれを(char *)としてキャストしなければならないと思います。
このアプローチは、引数と一意のPIDを持つ完全に独立したプロセスを提供します。親プロセスが終了してから長く実行し続けることもできますし、親プロセスの前に終了することもできます。
'fork'は進行中のプロセスのコピーを作成しますが、プロセスを開始しません。 – Beta
http://advancedlinuxprogramming.com/ –