Verarbeitung der Ausgabe von shell-Kommandos in C

Post Reply
Message
Author
Markus

Verarbeitung der Ausgabe von shell-Kommandos in C

#1 Post by Markus »

Hi, könnt ihr mir helfen?

Ich würde gerne aus einem C-Programm auf konsole - Kommandos (also z.B. 'du' oder so) zugreifen und dann deren Ausgabe weiterverarbeiten.
Die Kommandos würde ich mit system() starten, aber wie komme ich an die Ausgabe ran?

Vielen Dank für jeden Tip!
Gruß,
Markus

Sebastian Ude

Re: Verarbeitung der Ausgabe von shell-Kommandos in C

#2 Post by Sebastian Ude »

Hm ...

Eine Lösung über system() und irgendwelchen Abfang-Aktionen von den Ausgaben von 'du' o.ä. ist IMHO ziemlich unsauber.

Was hast du denn genau vor ?

Meinst du nicht, dass du mit statfs(2) / fstatfs(2) besser bedient wärst ?

Markus

Re: Verarbeitung der Ausgabe von shell-Kommandos in C

#3 Post by Markus »

z.B. würde ich mir gern ein Tool schreiben, daß mir die Belegung der verschiedenen Dateisysteme übersichtlich anzeigt (kennst Du Treesize unter Windows).

Wahrscheinlich gibt es genau so ein tool schon in zehnfacher Ausführung unter Linux, und ich finde auch 'du' super - aber manchmal bildet man sich eben ein das muß man jetzt programmieren. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Es würde mich aber ganz generell interessieren, ob es eine saubere Lösung gibt, die Ausgabe von Konsole Tools weiterzuverarbeiten. Bisher hab ich das über eine temporäre Textdatei gemacht, in die die Ausgabe weitergeleitet wurde. Ist natürlich ne Superlösung <img src="http://www.pl-forum.de/UltraBoard/Images/TooHappy.gif" border="0" align="middle">
Vielleicht kann man ja was mit ner pipe machen?

Was meinst du?

Gruß,
Markus

MD

Re: Verarbeitung der Ausgabe von shell-Kommandos in C

#4 Post by MD »

Hi,

so was geht mit Pipes bzw. Fifo. Mußt mal im Archiv des Linux Magazin nach schauen, die hatten da mal einen interessanten Artikel. Z.B. wurde da die Ausgabe von ls verarbeitet

Bye

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Verarbeitung der Ausgabe von shell-Kommandos in C

#5 Post by bakunin »

Hi!

Wenn ich mich recht erinnere, macht man das normal so: Man erzeugt eine Pipe, forkt, schließt im Kindprozess die Standardausgabe und öffnet ein Ende der Pipe als neue Standardausgabe, dann startet man das Programm und im Elternprozess liest man dessen Ausgabe aus dem anderen Ende der Pipe. Wenn dort dann ein EOF kommt, wartet man, bis das Kind terminiert.

man pipe
man fork
man close
man dup2
man execl
man waitpid

Berichtigt mich, wenn ich was vergessen habe oder falsch gesagt habe.

Cheers,
Wolfgang

Markus

Re: Verarbeitung der Ausgabe von shell-Kommandos in C

#6 Post by Markus »

Hi MD

Danke für den Tip!
War genau was ich gesucht hab. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Gruß
Markus

Post Reply