while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
FD_ZERO(&set);
FD_SET(sd,&set);
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
ただし、正常に動作します
FD_ZERO(&set);
FD_SET(sd,&set);
while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
しません。最初は機能しますが、次回 while ループを実行すると、sd ソケットがデータを受信してもタイムアウトになります。毎回セットを空にしていっぱいにしなければならないのは、リソースの無駄のように思えます。
なぜこれが良いのか、さらに良いのは、おそらくそれを回避する方法を提案している人はいますか?