|
>>1615 mak(spriggan)氏 > 0〜64までをチェックしかselectはチェックしていなかったので > selectはタイムアウトを返し、実際取得したファイルディスクリプタは > 64を超えた数になっていたのでFD_ISSETは反応を返した。 > というふうになっていた模様です。 確かになりますね。 知りませんでした。 しかし、fd_setの戻り値をチェックするのは、select(2)が正数を返した時のみにしておいた方が安全でしょう(select(2)に正しい第1引数を渡したとしても、タイムアウト時にfd_setがゼロクリアされるかは分かりません。規格としてゼロクリアが決まっているならO.K.でしょうが、そこまでしてselect(2)の戻り値のチェックを省く理由も見付かりません)。 # 今回はselect(2)の戻り値チェックを省いたおかげで、第1引数のバグに気づいたわけですが。 > ちなみに、ファイルディスクリプタの番号を > ここからここまでの番号しか取得しない。とか制限かける方法とか > ないのでしょうか? select(2)を呼ぶ時に、チェックすべきファイルディスクリプタの部分だけ、fd_setにマスクをかけますが(第1引数は効率の為)。 それとも、効率を気にしていますか? 確かに、非常に大きな番号のファイルディスクリプタ1つだけをチェックするとなると、無駄がありそうなことは否定しません。 それが気になるなら、poll(2)でしょうか。 |
|
>>1612 YAGI氏 # その場に行けば解決できるかもしれませんが、このやりとりでは、助けられる自信はありません。申し訳ないです。 > 当人まだ、知識が乏しく本にsmitとsmittyが書いてあったりもするのですが > 区別が分からずsmitでやってました^^; X以外でsmitを起動すると、tty版のsmittyと同じ動きなので、 > なお、smitのコマンド類はWinNTのTera Termより発行しています。 smitでもsmittyでも変わりありません。 # という事は、走る男を見ていないんですねえ。 # もしかして一度も見たことが無い、とかだったら不幸です。 > 私も、その手順で実際に行なってバージョンアップしたClientをもう一度 > NISの再設定を行ってServerのマップをmakeし直すと > 接続できなくなってしまうのです。 うーむ、あまり他人の文章のケチをつけるのもなんですが、何をどういう順序でやったのか、いまいち不明です。 (改行の位置に読点があると考えてよいのでしょうか。 この手の説明は、時系列に並べた箇条書の方が分かりやすいと思います。) |