Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : bildschirmausgabe in array speichern



mithras
19-08-2002, 14:52
hallo!
ich möchte die bildschirmausgabe in einen array speichern. habe bereits zwei möglichkeiten um die zu erreichen, aber die eine geht überhaupt nicht und die andere hat dumme nebenwirkungen:

1. Möglichkeit: (klappt überhaupt nicht)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
char text[] = "hallo du!";
char input[1000];

fprintf(stdout, "%s", text);
fgets(input, 1000, stdout);

fprintf(stdout, "%s", input);


return 0;
}



2. Möglichkeit

system("ls -l");
system("./ausgabe_test > message");

die Bildschirmausgabe von ls -l soll in ein array gepsiechert werden. dazu wird die ausgabe umgeleitet in die datei message, und aus der datei wiederum kann ich dann wieder normal auslesen und den inhalt in ein array speichern. funktioniert soweit, nur ist das system ind erzeit wo das proggi ausgeführt wird sau lahm, liegt warscheinlich da dran, dass das brogramm während is ausgeführt wird, mit > daraufzugegriffen wird.


bin für jede hilde dieses prob. zu lösen dankbar!

tkortkamp
19-08-2002, 15:04
Also die 1. Möglichkeit kapier ich überhaupt nicht? Das Programm hat doch stdout geöffnet um Sachen auf dem Terminal auszugeben, oder? Wieso versucht du dann davon etwas zu lesen? Du müsstest doch etwas dareinschreiben um _überhaupt_ etwas lesen zu können.

Wenn ich das jetzt richtig verstehe, möchtest du die Ausgabe von einem anderen Programm in deinem Programm lesen können? Dann schau mal hier bei IPC->Pipes: http://www.pronix.de/ckurs/ckurs.html#25

c ya,
Tobias

mithras
20-08-2002, 11:39
ne, ich wollte eigentlich die ausgabe von meinem programm in meinem programm verwenden, und zwar durch einen array, ohne einem anderen programm!

tkortkamp
20-08-2002, 14:26
Hä? Wieso das?
Dann schreib dir doch einen eigene printf-funktion (va_list). Und speicher halt jede Ausgabe die an die geht in deinem Array.

c ya,
Tobias

mithras
20-08-2002, 15:28
jo sicher das is ne möglichkeit, aber ich will auch den text, der auf dem bildschirmausgegeben wird und zwar z.B. durch system(ls)....in einen array speichern, und das geht so nicht...denk ich mal!?

tkortkamp
20-08-2002, 15:46
Wenn ich das jetzt richtig verstehe, möchtest du die Ausgabe von einem anderen Programm in deinem Programm lesen können? Dann schau mal hier bei IPC->Pipes: http://www.pronix.de/ckurs/ckurs.html#25

c ya,
Tobias

Da bitte! Da steht doch alles dazu... du musst ls nicht mit system sondern mit popen starten. Was du willst ist nicht die Ausgabe von deinem Programm (die wär mit printf), sondern die Ausgabe von einem anderen Programm in ein Array speichern (hier: ls). Das machst du mit popen (man popen).

c ya,
Tobias