Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Systembefehl in Variable speichern

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.10.2004
    Beiträge
    17

    Systembefehl in Variable speichern

    Dieser Systembefehl gibt mir eine Zahl aus. Nur wie speicher ich ihn in eine Variable ?

    system("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print $1 }' | cut -b 10-20");

    Es müsste doch eigendlich eine int Variable sein aber dann bekomme ich immer nur 0 raus und nicht die Zahl die der Systembefehl raus gibt.

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.11.2002
    Ort
    Hennef
    Beiträge
    106
    hallo,

    probier mal popen

    gruß

  3. #3
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,
    system() liefert nicht die Programmausgabe zurück, sondern den Exitcode des ausgeführten Programms, bzw. andere Werte, die in "man system" aufgelistet sind.

    Gruß, FLorian
    Ein gebrechlich Wesen ist der X-Server.

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    [spam]

    popen macht spars (Rächtschraibunk wägen den Sinnwarung fervelscht Sonst wär's halt nicht so komisch :P)

    [/spam]

    popen() verwendet man wie eine Datei, die man mit FILE* fopen öffnen kann:

    edit... hab mal deinen Befehl da eingefügt... sieht besser aus.
    Code:
    	FILE* fpsxreturn=popen("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print $1 }' | cut -b 10-20","r");
    	if(fpsxreturn!=NULL)
    	{
    		while(fgets(psxiobuf,sizeof(psxiobuf),fpsxreturn))
    		{
    			printf("Zeile: %s",psxiobuf);
    		}
    		fclose(fpsxreturn);
    	}
    ... liefert dir die Ausgabe des Befehls 'egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print $1 }' | cut -b 10-20'.
    Geändert von 7.e.Q (12-11-2004 um 10:23 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.10.2004
    Beiträge
    17
    Was ist denn psxiobuf ? Wenn es eine Varibal ist dann müsste ich wissen was für eine und was macht das "r" hinter dem Befehl ?

    Eigendlich müsste ich das alles mal erklärt bekommen, denn in den Manpages versteh ich nur bahnhof.

  6. #6
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo.
    Schau mal in die man-page von popen (zu dem "r"), da ist das erklärt.
    psxiobuf ist wohl ein char-Array (wg. %s bei printf() & der Verwendung bei fgets()).

    Gruß, Florian

    EDIT: Entschuldigung, ich habe deinen Betrag nicht ganz gelesen..also vergess den ersten Teil mit der man-page.
    Das r steht für read, w für write (wie bei fopen()). Du bekommst auch bei popen nichts anderes zurück als wie bei fopen: nämlich einen I/O-Stream.
    Im Klartext heißt das, dass du von dem "Strom" nur lesen kannst (was du dann auch mit fgets() machst), du kannst nichts hineinschreiben.
    Geändert von ContainerDriver (13-11-2004 um 17:50 Uhr)
    Ein gebrechlich Wesen ist der X-Server.

  7. #7
    Registrierter Benutzer
    Registriert seit
    26.10.2004
    Beiträge
    26
    Warum nicht exec*()? Damit bekommt man die Ausgaben hübsch in ein array geschrieben wieder, welches als Zeiger an die Funktion übergeben wird.

    Ich weiß jetzt nicht ob es unter Linux gcc genauso ist wie mit dem MingW oder DJGPP, aber kannst Dir mal die Manpages zu exec ansehen:


    Code:
    #include <unistd.h>
    
    int execl(const char *path, const char *argv0, ...);
    int execle(const char *path, const char *argv0, ...
               /*, char *const envp[] */);
    int execlp(const char *path, const char *argv0, ...);
    int execlpe(const char *path, const char *argv0, ...
                /*, char *const envp[] */);
    
    int execv(const char *path, char *const argv[]);
    int execve(const char *path, char *const argv[], char *const envp[]);
    int execvp(const char *path, char *const argv[]);
    int execvpe(const char *path, char *const argv[], char *const envp[]);
    Je mehr man vom Programmieren lernt, um so klarer wird einem, dass man so gut wie gar nichts darüber weiß.

    "Was bin ich? Willst Du meinen Ort wissen, kannst Du nicht wissen, wie ob und wie schnell ich mich bewege. Willst Du wissen wie schnell ich unterwegs bin, kannst du nicht sagen, wo ich bin." :D

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •