2011-01-05 8 views
1

ich ein Programm in C schreiben mag, das ein anderes Programm lesen kann und gibt es an dem Prozessor für execution.is es möglich, Systemaufruf zu verwenden, um es zu tun, ohne Schale mit (Linux)Ausführung c Programmaufruf mit System

Danke

Antwort

6

Der Systemaufruf, den Sie suchen, ist execve. Es hat verwandte Funktionen execl, execlp, execle, execv, execvp, abhängig davon, wie Sie die Befehlszeilenargumente und/oder Umgebungsvariablen speichern und übergeben möchten. Aber der Haken ist, dass alle diese Funktionen das Programm, das sie aufgerufen hat, davon abhalten, etwas anderes zu tun, da das neue Programm das existierende Programm ersetzt.

Wenn Sie ein Programm ausführen möchten, warten Sie, bis es beendet ist, und fahren Sie dann mit dem ursprünglichen Programm fort. Versuchen Sie stattdessen die Bibliotheksfunktion system. (Obwohl system erfordert/bin/sh.)

Wenn Sie etwas ausgefallenere benötigen, werden Sie wahrscheinlich fork und waitpid mit einem der exec* Funktionen kombinieren müssen. Es gibt viele Beispiele in man-Seiten und im Web, wie diese Funktionen kombiniert werden können.

0

, wenn Sie eine einfache Möglichkeit, dies zu tun verwenden möchten:

system("./Program_To_Run.o"); 

Dies ist jedoch nicht der beste Weg. Es ist nur der schnellste Weg.

Wenn Sie das Ampersand können Sie den Prozess in den Hintergrund:

system("./Program_To_Run.o &"); 
Verwandte Themen