Re: OT: xterm Was: Re: MIME-type-Auswertung ohne Gnome/KDE

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 30 Aug 2012 14:24:32 +0200 (CEST)

Polytropon <freebsd(at)edvax.de> wrote:
> On Wed, 29 Aug 2012 21:31:07 +0200, Christoph Sold wrote:
> > Leider warten die Programme, bis xterm mit dem Scrollen fertig ist.
> > Leitet man alle Ausgaben nach /dev/null um, werden die meisten
> > Programme ungemein schnell.
>
> Ist das so? Ich dachte, die Ausgabe wäre _gepuffert_,
> so daß man mit einem > /dev/null keinen Geschwindigkeits-
> unterschied erzielt... oder verwechsle ich da was?

Bei >/dev/null leitet es die Shell direkt nach /dev/null,
und das Terminal bekommt die Ausgaben nie zu Gesicht.
Das geht ziemlich fix.

Ohne Umleitung gehen die Ausgaben über ein Pseudo-TTY an
den Terminal-Prozess (in diesem Fall xterm). Hier kann
an drei Stellen gepuffert werden: Bei der Ausgabe des
laufenden Programmes (cat o.ä.), im TTY-Code des Kernels,
und evtl. im Eingangscode des Terminal-Prozesses (xterm).

Den TTY-Buffer im Kernel kann man vergessen; der ist nicht
groß. Der Ausgabepuffer des Programms in der Regel auch
nicht: Wenn mit setvbuf() nichts anderes festgelegt wird,
ist stderr immer ungepuffert, und stdout ist lediglich
zeilengepuffert, wenn es mit einem TTY verbunden ist.

Da jedes xterm ein einzelner single-threaded Prozess ist,
kann er keine Eingangsdaten annehmen, wenn er gerade mit
etwas anderem beschäftigt ist, z.B. mit dem Rendern des
Fensterinhalts. Und wenn er keine Daten annimmt, dann
blockiert der sendende Prozess (z.B. cat), sobald die
Puffer voll sind -- was recht schnell geschieht, da sie
ja eher klein bzw. gar nicht vorhanden sind (siehe oben).

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
C++: "an octopus made by nailing extra legs onto a dog"
        -- Steve Taylor, 1998
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 30 Aug 2012 - 14:24:42 CEST

search this site