read() a select()(Was: Blokovani v fgets)

Michal Krause mike na navrcholu.cz
Úterý Srpen 4 16:38:07 CEST 1998


Pavel Kankovsky wrote:
> roury maji tu vlastnost (ktera by mohla byt uzitecna), ze zapisy ktere
> nejsou delsi nez PIPE_BUF jsou atomicke (takze je lze precist najednou).
> U datagramovych socketu je pri pouziti send() a recv() mozno spolehlive
> rozlisit jednotlive casti i prijimajici strane.

Fajn, to by fungovalo. Sice nemuzu nikde najit PIPE_BUF, ale kdesi jsem cet, ze
to vubec nemusi byt limitovane (snad jen velikosti pameti).
Takze tim by se to vyresilo, ale porad zustava problem s tim, ze program ktery
vypada asi takhle

otevri fifo pro cteni
v nekonecnem cyklu
{
 cti z fifo
 pokud jsou data, zpracuj je
}

bude za predpokladu, ze je FIFO neotevrene a nejsou v nem data, behat v cyklu a
vezme si vsechen vykon procesoru. Nejak musi byt mozne ho pozastavit dokud se
data neobjevi. Takhle prece blokuje open(), pokud jde o fifo - dokud nekdo
neotevre druhy konec pro zapis, program stoji.

                                   MK
                                   /\
----------------------------------/  \----------------------------------
Michal Krause - 4WeB         /\  /    \  /\
mailto:mike na navrcholu.cz    /  \/      \/  \           Sluzba Na vrcholu
http://4web.navrcholu.cz/  /    \      /    \   http://www.navrcholu.cz/
ICQ:7665279               /      \    /      \
------------------------------------------------------------------------


Další informace o konferenci Linux