Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
systemausgabe umleiten

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ne
Gast





BeitragVerfasst am: 06. Jun 2002 13:45   Titel: systemausgabe umleiten

hi .. ich schon wieder

wie kann in systemausgaben umleiten ?
z.Bsp. möchte ich die Ausgabe von PWD in eine variable speichern

inder shell wäre das so:

pwd_var=`pwd`

ist nur ein Beispiel
ich möchte später über C ein Shellscript starten und den ausgabewert für die bearbeitng einer fehlermeldungen verwenden.

danke
 

Jochen
Gast





BeitragVerfasst am: 06. Jun 2002 14:59   Titel: Re: systemausgabe umleiten

Wahrscheinlich ist popen(3) das, was Du suchst:

man 3 popen

Damit kannst Du dis Ausgabe eines Kommandos zeilenweise einlesen und dann wie gewünscht weiterberarbeiten/analysieren.

Arbeitest Du immer noch an Deiner Backup-Lösung? Und ist immer noch Sicherheit der Hauptgrund für die Portierung? Dann solltest du möglichst gar nicht mehr auf Shellskripte zurückgreifen. Die sind zu leicht manipulierbar von aussen, ohne dabei das Skript ändern zu müssen (siehe beispielsweise Shellvariable IFS). Man kann sichere Shellskripte schreiben, aber das ist vergleichsweise aufwendig. Also hast Du m.E. die Wahl zwischen einem C-Programm, dass ein aufwändig gesichertes Skript aufruft, und einem einzelnen aufwändig gesichertem Skript. Ich persönlich würde die Variante ohne C-Programm bevorzugen.

Jochen
 

ne
Gast





BeitragVerfasst am: 06. Jun 2002 15:20   Titel: Re: systemausgabe umleiten

hi Jochen ...

dank dir für die schnelle und gute Antwort (wie immer)

Ich bin leider noch blutiger C-Anfänger - versuche noch unwissen mit fleiß zu kompensieren.
das Scripten ( Shell besser als cgi) bekomme ich gut hin (arbeite seit längerem mit Unix), nur leider kann ich wenig von diesem Wissen in C(++) umsetzen.
Deswegen hat mich ja auch das Interesse für C(++) gepackt.
Ich habe auch schon Unsummen in Bücher investiert , bin aber der Meinung, daß Probieren und das Lösen kleinerer Probleme der bessere Lehrmeister ist.
Praxis ist halt besser - die fehlt halt nur.

kennst du vielleicht eine Seite, in der kleinere und hilfreiche Beispiele zu finden sind ?

PS: ich hänge noch an der BackUp-Lösung an besagtem Problem.

in der Schell würde ich die Config mit grep auslesen, ob sich die Zeichenkette "user=allow" in dieser Datei befindet ... wenn ja, dann weiter, sonst exit.
Die Umsetzung in C bereitet mir da mehr Schwierigkeiten. Ich benutze dazu dies als Referenz:
http://www.pronix.de/ckurs/ckurs83.html <- zumindest kann ich so erstmal einen Text lesen, nur wie ich ihn Zeilenweise nach eine bestimmten zeichenkette durchsuche weis ich noch nicht.

Nochmals danke und Gruß
 

Jochen
Gast





BeitragVerfasst am: 07. Jun 2002 12:51   Titel: Re: systemausgabe umleiten

> kennst du vielleicht eine Seite, in der kleinere und hilfreiche Beispiele zu finden sind ?

Leider nein. Meine eigenen C-Kenntnisse haben (damals) schwer von eine 4wöchigen Kurs profitiert - aber das war auch von der Arbeit aus bezahlt worden.

Kennst Du das C-Puzzle-Buch? Schau es Dir erst mal an - es enthält wirklich schwere Beispielprogramme, deren Ausgabe man im Kopf/auf Papier erarbeiten soll. Wenn man das schafft, hat man das jeweilige Thema (Operatoren, Pointer, dynamische Speicherallozierung, Arrays,...) nicht nur verstanden, sondern auch verinnerlicht . Das hat mich schon etwas weitergebracht.

Jochen
 

ne
Gast





BeitragVerfasst am: 07. Jun 2002 18:42   Titel: Re: systemausgabe umleiten

hi Jochen

also popen macht bei mir nicht das, was ich will

Beispiel:

code:


#include <stdio.h>

main() {
FILE *unam
unam = popen("uname -n", "r");
printf("%s", unam);
pclose(unam);
}



was ist unam dann ? offensichtlich kein string ?
denn ich möchte es später mit
if(strcmp(unam, "linux")==0){
printf("Hostname ist %s", unam);
} else {
printf("Hostname ist nicht %s", unam);
}
vergleichen. da aber schon printf mist ausgiebt, so kann das auch nicht funktionieren. wie wandel ich unam in einen string um - oder habe ich das problem nicht richtig verstanden ?

DANKE

PS: diese Beispiel hat keinen praktischen Wert - reine Übung
 

Labba
Gast





BeitragVerfasst am: 07. Jun 2002 20:19   Titel: Re: systemausgabe umleiten

Vielleicht solltest du doch mal das Buch lesen.
Dann wüsstest du, dass du ein Pointer vom Typ FILE ausgelesen werden muss. Dafür nimmst du am besten Funktionen wie "read()". Du solltest die Manpage ebenfalls zu rate ziehen !!!!!
 

ne
Gast





BeitragVerfasst am: 07. Jun 2002 22:02   Titel: Re: systemausgabe umleiten

danke habs schon gelöst ... ach ja Labba: deine "!"-Taste klemmt

Gruß
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy