• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Externes Programm aus C Script starten

Nobbi

Empire
Registriert
30.12.06
Beiträge
88
Guten abend zusammen,

ich möchte ein Programm (hier Gnuplot) aus einem C-Script starten, in dem Werte berechnet werden. Unter Windows geht das mit Shell "...." ´. Gibt es auch einen Befehl beim Mac der so etwas kann?

Schöne Grüße
Nobbi
 
Was meinst Du mit "C-Script"? Ein Script? Ein C-Programm?

Wir entscheiden uns mal für C-Program. Hier kannst Du (wie bei, schauder, Windows) system (3) verwenden. Damit bekommst Du aber nur den "Result Code" zurück.

Falls Du andere Ausgaben des Programms brauchst, ist popen (3) das Mittel der Wahl

Alex
 
Ja ein C-Programm,

ich will eigentlich nur Gnuplot '*.sav'
starten, mit den beiden Befehlen bekomme ich nur Fehlermeldungen.

Gruss
 
ich will eigentlich nur Gnuplot '*.sav'
starten, mit den beiden Befehlen bekomme ich nur Fehlermeldungen.

Meine Glaskugel ist leider immer noch in Reparatur, daher muss ich Dich bitte, die Fehlermeldungen doch einmal zu posten.

Grundsätzlich kann man aber sagen, dass man sich auf globbing (also auf den '*') in nicht-interaktiven Shells (und so eine bekommst Du hier) nicht verlassen kann.
Siehe auch: http://promberger.info/linux/2009/0...nd-find-regular-expressions-in-shell-scripts/

Alex
 
ich hatte es so verstanden, dass ich system(gnuplot 'praktikum.sav') in meinen C-Code schreibe und er das Programm dann ausführt (analog zu dem Windows Befehl). Stattdessen meckert er 'Gnuplot was not declared in that scope' und 'Character or constant too long for this type'.
Das in der Klammer hinter system wäre das, was ich so direkt ins Terminal tippen würde um das Programm "manuell" zu starten

Gruss
 
Stattdessen meckert er 'Gnuplot was not declared in that scope' und 'Character or constant too long for this type'.

Da hat er ja auch völlig recht. system (3) erwartet einen C-String, also system ("echo foo");

Alex