PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ncurses



michael.kuznik
21-03-2005, 10:31
Hallo,

ich bin dabei ein kleines Programm(in C) zu schreiben um Ascii-Dateien über
die serielle Schnittstelle zu senden. (Reine Konsole, kein X11)

Das Problem ist jetzt folgendes:

Ich rufe mit "system(cmd)" das Programm "sz -y ...." auf und möchte nun die Ausgabe
des Befehls in einem bestimmten Bereich im Fenster anzeigen.
z.B. Angefangen an Koordinate 20,5

Da das Programm "sz" aber mehrere Zeilen Ausgabe erzeugt springt der Curser immer
an die erste Stelle.

Was für Mögichkeiten habe ich?


thx im Vorraus für eure Hilfe
Michael

lizer
21-03-2005, 12:34
Hmm, ich verstehe nicht ganz was du meinst. Du startest einfach das Programmer per system() und ärgerst dich, dass die Ausgabe einfach "irgendwo" erfolgt? Wenn ich das richtig verstanden habe, wäre eine Möglichkeit, die Ausgabe in eine Datei umzuleiten ("> datei" an den Befehl hängen) und dann die Ausgabe aus der Datei wieder einzulesen. So kannst du die Ausgabe selbst auf den Monitor schreiben und beliebig formatieren. Dumm ist nur, dass du dann überall temporäre Dateien rumfliegen hast. Habe das einmal so gelöst, dass ich einfach einen Socket eröffnet und dann einen String zusammengeschraubt habe:
sprintf(cmd, "befehl > /proc/%d/fd/%d", getpid(), sock);
Nach dem Ausführen kannst du die Daten dann vom Socket einlesen. Noch einfacher: Mach einen FIFO.

Ich hoffe mal, ich hab das richtig verstanden und das ganze nicht umsonst getippt ;)

MfG,
Lizer

panzi
21-03-2005, 13:52
Also ich würde das ja mit popen() (http://unixhelp.ed.ac.uk/CGI/man-cgi?popen) machen. ;)