On CentOS 5.4,
Linux 2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:18:27 EST 2009
i686 i686 i386 GNU/Linux
In man 2 send I find:
The send() call may be used only when the socket is in a connected
state (so that the intended recipient is known). The only difference
between send() and write() is the presence of flags. With zero flags
parameter, send() is equivalent to write().
In some complex server software, if the client disconnects:
send: delivers errno == ECONNRESET
but
write: crashes the server process.
So it is not really equivalent. Any thoughts on this?
Thanks,
Mike.
On 4/6/2010 2:16 PM, Michael D. Berger wrote:> On CentOS 5.4, > Linux 2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:18:27 EST 2009 > i686 i686 i386 GNU/Linux > > In man 2 send I find: > > The send() call may be used only when the socket is in a connected > state (so that the intended recipient is known). The only difference > between send() and write() is the presence of flags. With zero flags > parameter, send() is equivalent to write(). > > In some complex server software, if the client disconnects: > send: delivers errno == ECONNRESET > but > write: crashes the server process. > > So it is not really equivalent. Any thoughts on this?Are you sure it isn't the normal signal associated with a write when the other end closes first that is crashing the process? -- Les Mikesell lesmikesell at gmail.com