zmq_ipc.txt 2.82 KB
Newer Older
1 2
zmq_ipc(7)
==========
3

4 5 6

NAME
----
Martin Lucina's avatar
Martin Lucina committed
7
zmq_ipc - 0MQ local inter-process communication transport
8 9 10 11


SYNOPSIS
--------
Martin Lucina's avatar
Martin Lucina committed
12 13
The inter-process transport passes messages between local processes using a
system-dependent IPC mechanism.
14

Martin Lucina's avatar
Martin Lucina committed
15 16
NOTE: The inter-process transport is currently only implemented on operating
systems that provide UNIX domain sockets.
17 18


Martin Lucina's avatar
Martin Lucina committed
19 20
ADDRESSING
----------
Pieter Hintjens's avatar
Pieter Hintjens committed
21 22 23
A 0MQ endpoint is a string consisting of a 'transport'`://` followed by an
'address'. The 'transport' specifies the underlying protocol to use. The
'address' specifies the transport-specific address to connect to.
Martin Lucina's avatar
Martin Lucina committed
24

Pieter Hintjens's avatar
Pieter Hintjens committed
25 26
For the inter-process transport, the transport is `ipc`, and the meaning of
the 'address' part is defined below.
Martin Lucina's avatar
Martin Lucina committed
27

Pieter Hintjens's avatar
Pieter Hintjens committed
28 29 30 31

Binding a socket
~~~~~~~~~~~~~~~~
When binding a 'socket' to a local address using _zmq_bind()_ with the 'ipc'
Martin Lucina's avatar
Martin Lucina committed
32 33 34 35 36 37
transport, the 'endpoint' shall be interpreted as an arbitrary string
identifying the 'pathname' to create. The 'pathname' must be unique within the
operating system namespace used by the 'ipc' implementation, and must fulfill
any restrictions placed by the operating system on the format and length of a
'pathname'.

Pieter Hintjens's avatar
Pieter Hintjens committed
38 39 40 41
When the address is `*`, _zmq_bind()_ shall generate a unique temporary
pathname. The caller should retrieve this pathname using the ZMQ_LAST_ENDPOINT
socket option. See linkzmq:zmq_getsockopt[3] for details.

42 43 44 45 46 47 48 49
NOTE: any existing binding to the same endpoint shall be overridden. That is,
if a second process binds to an endpoint already bound by a process, this
will succeed and the first process will lose its binding. In this behavior,
the 'ipc' transport is not consistent with the 'tcp' or 'inproc' transports.

NOTE: the endpoint pathname must be writable by the process. When the endpoint
starts with '/', e.g., `ipc:///pathname`, this will be an _absolute_ pathname.
If the endpoint specifies a directory that does not exist, the bind shall fail.
Pieter Hintjens's avatar
Pieter Hintjens committed
50

Martin Lucina's avatar
Martin Lucina committed
51 52 53 54 55 56 57
Connecting a socket
~~~~~~~~~~~~~~~~~~~
When connecting a 'socket' to a peer address using _zmq_connect()_ with the
'ipc' transport, the 'endpoint' shall be interpreted as an arbitrary string
identifying the 'pathname' to connect to.  The 'pathname' must have been
previously created within the operating system namespace by assigning it to a
'socket' with _zmq_bind()_.
58 59


Martin Lucina's avatar
Martin Lucina committed
60 61 62 63
EXAMPLES
--------
.Assigning a local address to a socket
----
Pieter Hintjens's avatar
Pieter Hintjens committed
64
//  Assign the pathname "/tmp/feeds/0"
Martin Lucina's avatar
Martin Lucina committed
65 66 67 68 69 70
rc = zmq_bind(socket, "ipc:///tmp/feeds/0");
assert (rc == 0);
----

.Connecting a socket
----
Pieter Hintjens's avatar
Pieter Hintjens committed
71
//  Connect to the pathname "/tmp/feeds/0"
Martin Lucina's avatar
Martin Lucina committed
72 73 74
rc = zmq_connect(socket, "ipc:///tmp/feeds/0");
assert (rc == 0);
----
75

76 77
SEE ALSO
--------
Martin Lucina's avatar
Martin Lucina committed
78 79
linkzmq:zmq_bind[3]
linkzmq:zmq_connect[3]
80 81 82
linkzmq:zmq_inproc[7]
linkzmq:zmq_tcp[7]
linkzmq:zmq_pgm[7]
Pieter Hintjens's avatar
Pieter Hintjens committed
83
linkzmq:zmq_getsockopt[3]
Martin Lucina's avatar
Martin Lucina committed
84
linkzmq:zmq[7]
85 86


87 88
AUTHORS
-------
Pieter Hintjens's avatar
Pieter Hintjens committed
89 90
This 0MQ manual page was written by Pieter Hintjens <ph@imatix.com>,
Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <mato@kotelna.sk>.
91 92 93 94