Castecny zapis do socketu

Jan 'yanek' Bortl yanek na ya.bofh.cz
Pátek Květen 2 00:29:29 CEST 2008


Jan Kasprzak wrote:
> Jan 'yanek' Bortl wrote:
> : Jan Kasprzak wrote:
> : > 
> : > 	Cili zajima me, jak to ze kdyz mi poll()/epoll() rekne ze deskriptor
> : > je pripraveny k zapisu, tak ve skutecnosti se zapis zablokuje? A co mam
> : > delat pro to, aby se nezablokoval?
> : 
> : Strelba od boku: jsou zminene descriptory otevreny jako O_NONBLOCK?
> : 
> 	Nejsou. Zapomnel jsem napsat - kdyz dam O_NONBLOCK (nebo treba
> alarm(2)) tak se provede castecny zapis. Ale nevedel jsem, ze by
> !O_NONBLOCK implikovalo ze se vzdy delaji plne zapisy a ceka se na ne.
> Mel jsem za to, ze pokud poll() nebo select() vrati pripravenost k zapisu,
> tak to znamena, ze write() zapise aspon neco a pak skonci.

Ja mam zase za to, ze se tak deje pokud se nestane neco fatalniho.

> 	Jeste je teda moznost hrat si s nejakym
> setsockopt(fd, SOL_SOCKET, SO_SNDBUF) nebo SO_SNDLOWAT nebo neco takoveho.

<fuj>Anebo tam cpat data po jednom bajtu :-)</fuj>

Kdyz jsme tedy u toho, jakym zpusobem zjistit jak velky a kolik mista je v 
output bufferu urciteho descriptoru? write() nebo nekdo pod nim to 
predpokladam nejak vi.

P.S. Kdo vymyslel 25minutovy greylist na relay.muni ?!

-- 
Jan 'yanek' Bortl <yanek [at] ya.bofh. cz>
http://ya.bofh.cz/ | jab: yanek [at] mitranet. cz
-----------------------------------------------------------------
"Maybe one day you will learn that your way is not the only way."
                                         Opher [StarGate: The Nox]



Další informace o konferenci Linux