Ich bin zu spät, zu reagieren, aber hier ist, wie ich es tun:
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.
Zuerst Sie fork() den Prozess, ein neues Verfahren zu schaffen. Es hat immer noch den gleichen Speicherplatz wie der alte. fork() gibt sowohl für die übergeordneten als auch für die untergeordneten Prozesse zurück. Wenn fork() null zurückgibt, sind Sie der untergeordnete Prozess. Der untergeordnete Prozess verwendet dann execl(), um den Prozessspeicher durch einen aus einer neuen Datei zu ersetzen.
Beachten Sie, dass progname zweimal execl() gegeben wird. Die erste ist, was execl() tatsächlich versuchen wird zu laufen, die zweite ist argv [0]. Sie müssen beide angeben, oder die Anzahl der Argumente wird um eins verringert. Progname muss alle erforderlichen Pfadinformationen enthalten, um das gewünschte ausführbare Image zu finden.
Ich gebe zwei Argumente in diesem Beispiel, aber Sie können so viele übergeben, wie Sie möchten. Es muss mit NULL beendet werden, und ich denke, Sie müssen es als (char *) wie ich es zeigen zu werfen.
Dieser Ansatz gibt Ihnen einen völlig unabhängigen Prozess mit Argumenten und einer eindeutigen PID. Es kann weiter ausgeführt werden, lange nachdem der Elternprozess beendet wurde, oder es kann vor dem Elternprozess beendet werden.
'fork' erstellt eine Kopie eines laufenden Prozesses, es initiiert * keinen Prozess. – Beta
Lesen Sie http://advancedlinuxprogramming.com/ –