[linux] Zatuhnutie programu na write()

Marian Cavojsky cavojsky na soria-grey.sk
Středa Duben 10 11:51:12 CEST 2002


On Tue, Apr 09, 2002 at 06:37:19PM +0200, Ondrej Jombik wrote:
>                                         Maxim, 18:36:35
>                                         09. april 2002 (utorok)
> Zdravim.
> 
> 	Jeden moj program mi na Linuxe tuhne. Proste z nicoho sa zablokuje 
> write() syscall. Ked som to stracoval dostal som zaujimavy vysledok:
> 
> ...
> select(1024, [0 5], [1 4], [], NULL)    = 4 (in [0 5], out [1 4])
> read(0, "ody:x:99:99:Nobody:/:\nalias:x:40"..., 5000) = 5000
> write(4, "ody:x:99:99:Nobody:/:\nalias:x:40"..., 5000
> [tuto to zatuhlo]
> 
> 	Vsetko by bolo fajn, keby select() nevratil filedescriptor 4 ako out
> (viz prvy riadok). Podla man stranky syscallu select() by teda write() na
> filedescriptore 4 nemal by v zablokovany. Citujem:
> 
> ...those in writefds will be watched to see if a write will not block...
> 
> 	Lenze mne select() vrati vo writefds 4 a na write(4) sa zablokuje.  
> Netusite niekto, v com moze byt problem? Nevadi tomu ten read(0) medzi tym?
> 

Pozor, mozno sa tam da zapisat len jeden znak, ale zapisat sa tam da.
Nijakym sposobom (mne znamim) sa neda zistit, kolko znakov sa tam da
zapisat, mozete to robit len tak, ze zapisete jeden znak a potom sa
znovu opytate.

-- 
Marian Cavojsky <cavojsky @ soria-grey.sk>
Spravca siete, Soria & Grey s.r.o, reklamna agentura

Windows&Office jsou jako droga. Krasny a prijemny prvni dojem,
zvyknes si a nemuzes uz bez nich zit.
A pak zacnou prichazet vedlejsi ucinky ...





Další informace o konferenci linux