nn_term(3)
==========

NAME
----
nn_term - notify all sockets about process termination


SYNOPSIS
--------
*#include <nanomsg/nn.h>*

*void nn_term (void);*


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
-------

----
s = nn_socket (AF_SP, NN_PAIR);
nn_term ();
rc = nn_send (s, "ABC", 3, 0);
assert (rc == -1 && errno == ETERM);
----


SEE ALSO
--------
<<nn_close#,nn_close(3)>>
<<nn_send#,nn_send(3)>>
<<nn_recv#,nn_recv(3)>>
<<nn_getsockopt#,nn_getsockopt(3)>>
<<nanomsg#,nanomsg(7)>>


AUTHORS
-------
link:mailto:sustrik@250bpm.com[Martin Sustrik]

