select() a chyba EINTR

Dalibor Toman dtoman na fortech.cz
Středa Červenec 22 19:11:58 CEST 1998


DD,

narazil jsem na problem, ktery jsem sice vyresil ale presto by me
zajimalo, proc vlastne vznikl.

v programu je sekvence:
1) otevru UDP socket
2) poslu UDP datagram
3) cekam na UDP data na socketu tak ze pomoci select() sleduju, zda se
neobjevi prichozi data
4) prijmu data
5) pokud neprisla odpoved nebo doslo k chybe opkajuj od 2)

no a v bode 3 se na nekterych strojich objevuje chyba v selectu EINTR.
Pritom staci select zopakovat a tento druhy pokus skonci vzdy OK. Na
nekterych strojich se chyba objevuje pokazde, na nekterych nikdy.
Zpracovani dat je delane tak, ze se body 2 az 4 opakuji nekolikrat pokud
neprijde odpoved nebo dojde k chybe. Pokud neni v kodu zapsan druhy
pokus o select() v pripade chyby EINTR, tak pri druhem prubehu je take
vse vzdy se selectem v poradku.

Vi nekdo proc by mel select takhle dopadnout?

Zdravi
D. Toman






Další informace o konferenci Linux