When will my application receive SIGPIPE?

When will my application receive SIGPIPE?

  From Richard Stevens (rstevens@noao.edu):

  Very simple: with TCP you get SIGPIPE if your end of the connection
  has received an RST from the other end.  What this also means is that
  if you were using select instead of write, the select would have
  indicated the socket as being readable, since the RST is there for you
  to read (read will return an error with errno set to ECONNRESET).

  Basically an RST is TCP's response to some packet that it doesn't
  expect and has no other way of dealing with.  A common case is when
  the peer closes the connection (sending you a FIN) but you ignore it
  because you're writing and not reading.  (You should be using select.)
  So you write to a connection that has been closed by the other end and
  the oether end's TCP responds with an RST.



Home
FAQ