Re: Output ueberschreiben in C
David Haller <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
Am Thu, 07 Oct 2004, Henning Weier schrieb:
>Kann man in C (unter Linux) etwas, was man an stdout geschrieben hat,
>ueberschreiben?
Ja. man console_codes, man isatty.
Quick & Dirty und nicht portabel geht das sogar in der shell:
$ for i in `seq 1 100`; do
printf "[2K[1Gbar: %03i%%" $i;
sleep 0.05;
done;
printf "\n"
Die ^[ sind Escapezeichen, in C einzugeben z.B. mit '\x1B':
int i;
for( i = 0; i < = 100; ++i) {
printf("\x1B[2K\x1B[1Gbar: %03i%%", i);
usleep(50000);
}
printf("\n");
In 'man console_codes' finden sich die diversen Escape-Sequenzen, und
teilweise auch, auf welchen Terminals diese jeweils funktionieren.
Und wie angedeutet: man sollte unbedingt pruefen, ob man denn auch
wirklich auf ein Terminal schreibt und nicht etwa eine Pipe oder Datei
zumuellt!
Um portabel zu sein muss man aber termcap / terminfo oder aehnliches
verwenden, also z.B. (n)curses verwenden.
HTH,
-dnh
--
Die drei Todfeinde des Programmieres:
Sonnenlicht, frische Luft und das unerträgliche Gebrüll der Vögel.
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]