zmq_close(3)

zmq_close3

Close 0mq socket

Usage

int zmq_close (void *socket);

Overview

The zmq_close() function shall destroy the socket referenced by the socket argument. Any outstanding messages physically received from the network but not yet received by the application with zmq_recv() shall be discarded. The behaviour for discarding messages sent by the application with zmq_send() but not yet physically transferred to the network depends on the value of the ZMQ_LINGER socket option for the specified socket.

zmq_close() must be called exactly once for each socket. If it is never called, zmq_ctx_term() will block forever. If it is called multiple times for the same socket or if socket does not point to a socket, the behaviour is undefined.

Note

The default setting of ZMQ_LINGER does not discard unsent messages; this behaviour may cause the application to block when calling zmq_ctx_term(). For details refer to zmq_setsockopt(3) and zmq_ctx_term(3).

Note

This API will complete asynchronously, so not everything will be deallocated after it returns. See above for details about linger.

Return value

The zmq_close() function shall return zero if successful. Otherwise it shall return -1 and set errno to one of the values defined below.

Errors

ENOTSOCK

The provided socket was NULL.

Releases

8 releases since Debian 7 (Wheezy); the text changed 6 times.

  1. 7–8
  2. 9
  3. 10
  4. 11
  5. 12
  6. 13
  7. Arch

Authors

This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at http://www.zeromq.org/docs:contributing.

From zeromq 4.3.5-3 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.