[linux-l] vim fragen

Oliver Bandel oliver at first.in-berlin.de
Mi Nov 13 23:52:59 CET 2002


On Wed, Nov 13, 2002 at 04:58:55PM +0100, Steffen Solyga wrote:
> Citing Oliver Bandel (Wednesday, 2002/11/13  3:16)...
> 
> > On Wed, Nov 13, 2002 at 01:16:21AM +0100, Steffen Solyga wrote:
> > > - auch wenn nicht explizit festgeschrieben: read(2) gibt spätestens
> > >   dann die Kontrolle an das aufrufende Programm zurück, wenn es auf
> > >   ein '\n' stößt
> > Wie kommst Du denn auf den Trichter?
> > 
> > Du meinst vermutlich das gepufferte Schreiben mit
> > mit der ANSI-C-Lib, wo das "\n" beim Schreiben
> > aus stdout erst mit einem "\n" dazu veranlasst wird,
> > die Daten raus zu schreiben, oder wenn der Puffer
> > bereits aufgefüllt ist, in den gepuffert wird.
> > Bei stderr ist es ohnehin alles ungepuffert.
> 
> Du hast Recht, war etwas voreilig geschlossen. Wie sich read(2)
> verhält, hängt wohl von der Dateiart ab, die gelesen wird.
> Wenn man von stdin (ohne Umlenkung) liest, ist es aber so, wie
> ich sagte.

Nö.

Das liegt daran, daß die Shell (die Dein Programm fork()t und exec()t)
eben erst die Daten abschickt, wenn das "\n" an der
Tastatur eingegeben wird, nicht an der Verhaltensweise von read(2).

Und solange kein Zeichen ausgegeben wird, kann read auch nichts lesen.
Wird dann alles auf einen Schlag ausgegeben, weil Du "\n" eingegeben
hast, kann read(2) tatsächlich Daten lesen und tut es solange,
bis da nix mehr ankommt.

Ciao,
   Oliver




Mehr Informationen über die Mailingliste linux-l