■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

初心者もOK! FreeBSD質問スレッド その24

230 :名無しさん@お腹いっぱい。 :02/10/15 19:45
select(2) について質問です。

select システムコールに2つのコネクション確立済みのTCP ソケットを渡し、
データが到着するのを待っていたとします。

たまたま、2つのTCP ソケットに同時にデータが到着し、select が2を返した
とします。

このあと、1つのTCP ソケットに対しては recv を行い、もう1つのソケットに
対しては、何もしないとします。

その後、また2つのTCP ソケットに対し、select した場合、まだデータを読み出して
いないソケットがあるので select は即時復帰してくれるのでしょうか?

sys_generic.c -> select() -> pollscan() -> fo_poll() って流れのような気がするの
ですが、ここで挫折しました。
カーネルの中で select 用に「ここまでは通知した」みたいなデータを持っているとは
思えないので、 recv をコールしていなければ、次回の select 時に再検出してくれそうな
気がするんですけど。

どないでしょう?



掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)