2017-05-09 19 views
-1

Gibt es eine Möglichkeit, ein Programm und/oder eine Datei innerhalb eines laufenden c-Programms mit einem Dateizeiger auszuführen, oder müsste man den normalen Dateinamen und system/fork usw. verwenden? Wenn es darauf ankommt, schreibe das auf Linux.Funktion vom Zeiger in c Programm ausführen

Im Grunde bin ich gefragt, ob so etwas wie dies möglich ist:

FILE * fp=fopen("somefile") 
//dostuff 

Führen Sie die Datei hier von fp zeigte (mit fp, nicht mit dem Dateinamen)

+0

Haben Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). –

Antwort

3

Gibt es eine Möglichkeit, ein Programm und/oder Datei innerhalb eines laufenden c Programm mit einem Dateizeiger

Es ist nicht wirklich klar, was Sie fordern, damit ich laufen versuchen Sie, Ihnen etwas davon zu zeigen, wie Sie es tun können.

Vielleicht sprechen Sie über execve():

int execve(const char *filename, char *const argv[], char *const envp[]); 

wo execve() das Programm, auf den Dateinamen ausführt und argv ist ein Array von Argument-Strings in das neue Programm übergeben. Ähnlich gibt es fexecve(), die genauso funktioniert wie execve() mit dem Unterschied, dass die auszuführende Datei über einen Dateideskriptor fd statt über einen Pfadnamen angegeben wird.

Oder Sie können system() zum Ausführen eines Programms verwenden. Zum Beispiel:

int result = system("./myProgram 2 3"); 

Dies wird für MyProgram warten ausgeführt werden, wird dann die Exit-Wert erhalten.

Last but not least können Sie fork() einen Systemaufruf verwenden, um Prozesse zu erstellen.