Aus C Programm nach Auswahl externes Shell Skript starten...
-
Hallo zusammen!
Ich würde gerne über ein c++ Programm mit Menü (das ich erstellt habe) nach dem drücken der Zahl 4 und enter ein externes Skript starten. Am besten ein Shell mit dem namen install.sh
Meine Frage dazu wäre, welchen befehk man dafür benötigt? So was wie: execute???
Danke schon mal !Liebe Grüsse,
Dirk
-
system, z.b., oder auch execv
-
Hi!
Hab da noch einen anderen befehl gefunden. Nur wenn ich das so mache und das programm kompiliert habe und starte kann ich das "Starten" im Menü auswählen aber es passiert nichts.
int starten() { execl("./install_ser.sh", "./install_ser.sh", "arg", "arg", 0); exit(-1); }
Hab das install_ser.sh Shell File im selben Verzeichnis. Wenn ich den Befehl execv benutze bekomme ich beim kompilieren den Fehler:
install.cpp: In function ‘int starten()’: install.cpp:200: error: expected `;' before ‘install_ser.sh’ install.cpp:200: warning: statement is a reference, not call, to function ‘execv
Was habe ich den da vergessen?
Grüsse,
Dirk
-
der Funktionsaufruf execv erwartet nur 2 Parameter:
int execv(const char *path, char *const argv[]);
Also meckert der Compiler zu Recht!
Execl() ist durchaus sinnvoll. Versuch mal
execl("./install_ser.sh", "./install_ser.sh", NULL);
vorausgesetzt, dein Script install_ser.sh will keine Parameter.
execl() erwartet lt. Manual den Pfadnamen des Programms, dann eine Parameterliste stellvertretend für argv[] (mit Pfadname, 1. Parameter, 2. Parameter, ...), und zum Schluss einen Null-Pointer.
... oder versuch mal testweise
execl("pwd","pwd",NULL);
wenn das klappt, hat dein Script ein Problem.
P.S.: Was soll das "exit(-1)"? Damit wird doch das Hauptprogramm beendet.
-
jox schrieb:
P.S.: Was soll das "exit(-1)"? Damit wird doch das Hauptprogramm beendet.
Aber auch nur wenn exec erfolglos war. Wenn exec erfolgreich ist wird der laufende Prozess eh ersetzt und das exit(-1) niemals erreicht.