NAME¶
zmq_ipc - 0MQ local inter-process communication transport
SYNOPSIS¶
The inter-process transport passes messages between local processes using a
system-dependent IPC mechanism.
Note
The inter-process transport is currently only implemented on operating systems
that provide UNIX domain sockets.
ADDRESSING¶
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.
For the inter-process transport, the transport is ipc, and the meaning of the
address part is defined below.
Binding a socket¶
When binding a
socket to a local address using
zmq_bind() with the
ipc 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.
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
zmq_getsockopt(3) for details.
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.
Note
on Linux only, when the endpoint pathname starts with @, the abstract namespace
shall be used. The abstract namespace is independent of the filesystem and if
a process attempts to bind an endpoint already bound by a process, it will
fail. See
unix(7) for details.
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().
EXAMPLES¶
Assigning a local address to a socket.
Connecting a socket.
// Connect to the pathname "/tmp/feeds/0"
rc = zmq_connect(socket, "ipc:///tmp/feeds/0");
assert (rc == 0);
SEE ALSO¶
zmq_bind(3) zmq_connect(3) zmq_inproc(7) zmq_tcp(7)
zmq_pgm(7) zmq_getsockopt(3) zmq(7)
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.