title: Is a successful send() "atomic"?
body: <p>Does a successful call to send() with the number returned equal to the amount specified in the size parameter guarantee that no "partial sends" will occur?</p>
  
  <p>Or is there some way that the OS might be interrupted while servicing the system call, send part of the data, wait for a possibly long time, then send the rest and return without notifying me with a smaller return value?</p>
  
  <p>I'm not talking about a case where there is not enough room in the kernel buffer; I realize that I would then get a smaller return value and have to try again.</p>
  
  <p><strong>Update:</strong>
  Based on the answers so far, my question could be rephrased as follows:</p>
  
  <p>Is there any way for packets/data to be sent over the wire <em>before</em> the call to send() returns?</p>