anchor.diff:  s = nn_socket (AF_SP, NN_PAIR);
   nn_term ();
   rc = nn_send (s, "ABC", 3, 0);
  -assert (rc == -1 && errno == ETERM);
  +assert (rc == -1 && errno == EBADF);
   ----
   
   
  
positive.code: DESCRIPTION
  -----------
  To help with shutdown of multi-threaded programs nanomsg provides the
  _nn_term()_ function which informs all the open sockets that process
  termination is underway.
  
  If a socket is blocked inside a blocking function, such as
  <<nn_recv#,nn_recv(3)>>, it will be unblocked  and ETERM error will be returned
  to the user. Similarly, any subsequent attempt to invoke a socket function other
  than <<nn_close#,nn_close(3)>> after _nn_term()_ was called will result
  in ETERM error.
  
  If waiting for _NN_SNDFD_ or _NN_RCVFD_ using a polling function, such as
  _poll()_ or _select()_, the call will unblock with both _NN_SNDFD_ and
  _NN_RCVFD_ signaled.
  
  The _nn_term()_ function itself is non-blocking.
  
  
  EXAMPLE
  
negative.code: --------
  <<nn_close#,nn_close(3)>>
  <<nn_send#,nn_send(3)>>
  <<nn_socket#,nn_socket(3)>>
  <<nn_recv#,nn_recv(3)>>
  <<nanomsg#,nanomsg(7)>>
  
  
  AUTHORS
  -------
  link:mailto:sustrik@250bpm.com[Martin Sustrik]
  link:mailto:garrett@damore.org[Garrett D'Amore]
  
  