[linux] Rura obojsmerna

Ondrej Jombik nepto na pobox.sk
Pátek Květen 2 00:48:09 CEST 2003


> -> bufferovanie nie je ziaduce. Filedescriptor, ktory vznikol cez pipe()
> -> vsak evidentne do kategorie nebufferovanych vstupov resp. vystupov
> -> nepatri.
> obavam sa ze jedine co glibc testuje je, ci je stdout terminal. Ak ako,
> nebufferuje, ak nie, bufferuje...

To je pravdepodobne...

> existuje tu teda pomerne hlupy workaround k danej situacii a to pouzit
> terminal :)

Cize childu posunut nejakym sposobom TTY. Toto ma napadlo uz davno, ale
za rok som neprisiel nato, ze ako. Mozno casom, ako sa moje vedomosti
rozsiria. A ktovie ci to vobec pomoze.

> v pripade ze potrebujes nebufferovat vystup v aplikacii ktoru
> programujes, mozno by si sa mal pohrat s funkciou setvbuf() resp
> setlinebuf()

Ano, ked ide o moju stream-based aplikaciu, nemam problem "forcnut" si
nebuferovanie. Funguje to vo vsetkych kompilovanych aj interpretovanych
programovacich jazykoch. Napriklad pre Perl:

    # System init
    select(STDERR); $| = 1;     # make unbuffered
    select(STDOUT); $| = 1;     # make unbuffered

Problem nastava, ked chcem pouzivat v sustave procesov uz naprogramovane
a zname aplikacie ako napriklad uz zmienovany "rev".

--
  _/|   Ondrej Jombik - nepto na php.net - http://www.nepto.sk - OJ812-RIPE
 <_  \  Platon SDG - open source software development - http://platon.sk
   `\|  Ako sa do hory vola, tak sa zhori traktor!  (c) 1999 Rattkin/MFF
    '`



Další informace o konferenci linux