[CentOS] socket: write vs send

Les Mikesell lesmikesell at gmail.com
Tue Apr 6 19:53:45 UTC 2010

On 4/6/2010 2:48 PM, Michael D. Berger wrote:
> On Tue, 06 Apr 2010 14:37:27 -0500, Les Mikesell wrote:
>> 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?
> No, I.m not sure.  I found that send also sometimes crashes it.
> Sorry for the misleading comment.

They should be equivalent - if the other end closes first, you'll get a 
SIGPIPE, which by default will kill the process.  If you want to keep 
running you have to handle or ignore the signal.

   Les Mikesell
    lesmikesell at gmail.com

More information about the CentOS mailing list