nastaveni timeoutu pro connect()

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Čtvrtek Duben 26 09:14:25 CEST 2001


> Jeste to jde udelat pres alarm()?

	IMHO hodne spinave a vlastne nesmyslne reseni...(i kdyz trivialni na
implementaci).

> oldalarm = signal(SIGALRM, abort_connect);
> alarm(timeout);
!!!!!!
> if (connect(sock, (struct sockaddr *)&s, sizeof(s)) < 0) {
>         not_connected();
> }
> alarm(0);
> signal(SIGALRM, oldalarm);

	Ftip je v tom, ze tam kde jsou '!!!!' neni zaruceno NICIM, ze alarm a
connect pujdou po sobe, predstavte si, ze mate vytizeny system nebo ze
se spozdi nejaka I/O HW operace... skocite do obsluhy signalu jeste
drive nez jste se vubec o connect pokusili... - rozhodne doporucuji
ciste reseni, tedy non-blocking sockety apod.

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Anenska 11, 602 00  Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux