In message <20030819.014435.10658276.taca / back-street.net>
	on Tue, 19 Aug 2003 01:44:54 +0900,
	Takahiro Kambe <taca / back-street.net> wrote:
> > EINPROGRESSのような時間がかかっているときに、システムコール一回
> > の間くらいではそうそう条件は変わらないのではないかという気がす
> > るのですが。
> 手元のテストでは、
余計かもしれませんが、さらに時系列的に追うと、

> 1. connect()失敗 (EINPROGRESS)
> 2. getsockopt()で ECONNREFUSED を検知

ユーザプロセス			カーネル

1. connect()実行		TCP SYNを送る指示をしてEINPROGRESSで返る。
2.				リモートからTCP RSTが返るけれど、
				connect()は既に終わってる。
3. getsockopt()を実行
4				ECONNREFUSEDな状態がわかっているので、
				これを値として返す。

といった感じになります。時間がかかっているといっても、TCP RSTが返るま
でconnect()で待ってるわけではないというだけのことなわけです。

-- 
神戸 隆博 / Takahiro Kambe