ある日のtwitter。 write()のエラーをコールバックする必要があるのかどうか。write()が失敗するのはカーネル内の出力バッファへのコピーが拒否されたときで、送信エラーが発生したときではないわけで。 実際に送信エラーが発生すれば、今度はread()が失敗するはず。特にTCPだったらwrite()が失敗しておきながらread()が失敗しないのは考えにくい…。保証はないけども…。 つまり宛先ノードが落ちたとかは、read()の失敗で検出できる。何ならwrite()が失敗したらファイルディスクリプタをclose()してしまえば、確実にread()が失敗する。 というわけで、送信専用のソケットでread待ちをしていない限りは、writeの失敗をコールバックする必要は無いんじゃないか。 でもwrite()失敗したときにclose()してしまうのは、別の問題が発生するかもしれない。clos