30.12.2012 Aufrufe

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

214<br />

Programmierung graphischer Benutzerschnittstellen mit <strong>Tcl</strong>/<strong>Tk</strong><br />

Ein Nachteil der obigen exec-Technik ist, daß das umgebende <strong>Tcl</strong>-<br />

<strong>Skript</strong> in seiner Abarbeitung blockiert (angehalten) wird, bis das mit<br />

exec aufgerufene Programm seine – vielleicht riesige – Ausgabe geliefert<br />

hat.<br />

Für langlaufende Programme, die periodisch Daten abliefern –<br />

H+McL nennen einen PPP-Monitor als Beispiel – gibt es eine andere<br />

Möglichkeit: mit open kann eine Pipe genau wie eine Datei geöffnet<br />

werden und es kann aus dem zurückgelieferten Deskriptor mit gets gelesen<br />

werden.<br />

Über Fileevents kann deren periodische Datenanlieferung behandelt werden.<br />

Genauso kann <strong>Tcl</strong> auch Daten in eine Pipeline schreiben.<br />

Ein weiteres Thema ist das Problem des verzögerten Schreibens. C-<br />

Programme unter UNIX, die ihre Standardausgabe nicht an den Bildschirm<br />

oder ein ähnliches Medium abliefern, puffern die Ausgabe aus<br />

Effizienzgründen zwischen, bis die Puffer (z. B. 4, 8 oder 32 KB) voll<br />

sind. Steckt in der GUI-Datenanlieferung eine Pipe, kann die Ausgabe am<br />

Bildschirm somit verzögert sein. H+McL betonen, daß <strong>Tcl</strong> immer seine<br />

Ausgabe sofort produziert. Trotzdem kann, durch Einsatz einer Pipe in der<br />

Ausgabe, die Datenanlieferung für eine interaktive Umgebung in unerwünschter<br />

Weise gepuffert sein. In diesen Fällen kann man mit dem<br />

flush-Kommando einzelne Werte sofort ausgeben oder noch besser mit<br />

fconfigure die Einstellung für einen Deskriptor generell ändern:<br />

set fid [open "| cat" "w"]<br />

fconfigure $fid -buffering line<br />

puts $fid "Diese Zeile wird sofort ausgegeben"<br />

puts $fid "Und diese auch."

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!