blob: 27aca1a3ce390d227c9ce0eecfb1fbe35f86a938 [file] [log] [blame]
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
linknanomsg: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 linknanomsg: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
--------
linknanomsg:nn_close[3]
linknanomsg:nn_send[3]
linknanomsg:nn_recv[3]
linknanomsg:nn_getsockopt[3]
linknanomsg:nanomsg[7]
AUTHORS
-------
Martin Sustrik <sustrik@250bpm.com>