anderes Programm starten
-
Hallo zusammen,
wieder n tolles Problem:
ich habe ein funktionierendes Programm. Das möchte ich nun über ein anderes C-Programm starten.
Dazu benutze ich folgende Zeile:
system("pfad");
Anscheinend wird das Programm auch gefunden.
Ich erhalte aber die Nachricht, dass irgendwelche shared libraries nicht eingebunden werden können. Das versteh ich nicht, da es doch auf dem anderen Weg auch aufgerufen werden kann.(Eigentliches Ziel ist es, dies Programm über ne Internetseite aufzurufen, aber da hab ich noch größere Probleme. Vielleicht kann man von da aus nicht auf alle Verzeichnisse zugreifen? Naja, da hab ich mir auf jeden Fall gedacht, das in 2 Schritten zu machen, erst über mein demo-cgi-c-programm und von da aus dann das andere starten.)
Hat jemand Erfahrung in solchen Dingen?
Danke fürs AnguckenGrüße vom Koala
-
System sollte man nicht verwenden, sondern besser Funktionen des BS. Gib mal Infos über deine Platform.
Gruß
-
juhu, antwort :), danke danke danke
also, ich programmier unter linux. ich hab von der firma esd einen power pc mit einem embedded linux system.
was für bs-funktionen ständen denn da zur auswahl?
linux hat ja hunderte von bibliotheken und headerfiles, da kann ich mich gar nicht entscheiden
grüße vom koala
-
Mit folgendem Befehl öffne ich "Gnuplot" mit dem Parameter "gnuplot.bat" ...
popen("gnuplot gnuplot.bat","w");
suchst du danach ?
grüße jesus
-
Hey Jesus, danke sehr für deine Antwort.
Leider bekomme ich auch mit diesem Befehl eine Fehlermeldung
"Programmname: error while loading shared libraries: Bibliothekenname: cannot open shared object file: No such file or directory"
Was ich nicht verstehe ist, warum es funktioniert, wenn ich es über die serielle Schnittstelle mit dem Programm "minicom" aufrufe.
Wie werden denn die Libraries eingebunden? Dachte immer, dass das beim Compilieren geschehen würde, aber anscheinend werden die ja doch nochmal aufgerufen. Wo werden die Pfade dafür festgelegt?danke und grüße vom koala
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
int CallandWait(char *c_Tool, char *c_Parameter) { pid_t pid; int status; int i_ExitStatus; int i_Error=0; switch(pid=fork()) { case -1: printf("Process creating failure\n"); i_Error=ERRORFORK; break; case 0: printf("Executing programm\n"); execl(c_Tool, c_Tool, c_Parameter, NULL); break; default: wait(&status); break; } return i_Error; }
Ganz einfaches Beispiel:
mit fork wird ein child process gestartet.
dann kannst du mit execl ein programm starten.
wait wartet bist der child process beendet wurde.schau am besten mal noch die manpages der 3 befehle durch.
hoffe das hilft weiter
-
danke für die antwort
hab's inzwischen hingekriegt.
lag wohl nicht direkt an mir. das system hat die benötigten bibliotheken nicht mitgeladen. warum auch immmer. aber jetzt klappts