2012-04-03 7 views

答えて

1

正確な動作は、基盤となるOSに依存してもよいが、一般的に、あなたはすなわち、write-1を返し、(例えばECONNRESETに)errnoを設定し、エラーを取得する必要があります。

+0

私は自分のLinuxマシンでそれをテストしたところ、値> 0を返します。 (つまり、書き込んだと思われる文字数) –

+0

少なくとももう一度書くことができるのは正常です。場合によってはさらに多くを得ることができます。私のローカルマシンに接続している古いBSDシステムでは、1つの書き込みが成功し、-1にerrnoに 'EPIPE'が設定されます。より現代的なLinuxボックスでは、同じことが起こります。これは、送信者が受信者がなくなったことを「見る」ために、1つの余分なTCP往復を要するからです。 'SO_KEEPALIVE'を設定すると、それ以前の発見が行われるはずですが、時間がかかることがあります(RFC-1122には少なくとも2時間かかる)。 – torek

関連する問題