名称
zmq_ipc - 0MQ 本地进程间通信传输方式
提要
进程间传输方式使用系统相关的进程间通信机制在本地进程之间传递消息。
注意
|
进程间传输方式目前仅在提供 UNIX 域套接字的操作系统上实现。 |
地址
0MQ 端点是一个由 'transport' 后跟 `://` 和 'address' 组成的字符串。'transport' 指定了要使用的底层协议。'address' 指定了要连接到的特定于传输方式的地址。
对于进程间传输方式,transport 是 ipc
,'address' 部分的含义定义如下。
绑定套接字
使用 'ipc' 传输方式通过 zmq_bind() 将 'socket' 绑定到本地地址时,'endpoint' 应被解释为标识要创建的 'pathname' 的任意字符串。该 'pathname' 在 'ipc' 实现使用的操作系统命名空间内必须是唯一的,并且必须满足操作系统对 'pathname' 格式和长度施加的任何限制。
当地址是通配符 *
时,zmq_bind() 将生成一个唯一的临时 pathname。调用者应使用 ZMQ_LAST_ENDPOINT 套接字选项检索此 pathname。详细信息请参阅 zmq_getsockopt。
注意
|
任何对同一端点的现有绑定都将被覆盖。也就是说,如果第二个进程绑定到已被一个进程绑定的端点,这将成功,并且第一个进程将失去其绑定。在这种行为上,'ipc' 传输方式与 'tcp' 或 'inproc' 传输方式不一致。 |
注意
|
端点 pathname 必须对进程可写。当端点以 '/' 开头时,例如 ipc:///pathname ,这将是一个 绝对 pathname。如果端点指定的目录不存在,绑定将失败。 |
注意
|
仅在 Linux 上,当端点 pathname 以 @ 开头时,将使用抽象命名空间。抽象命名空间独立于文件系统,如果一个进程尝试绑定已被另一个进程绑定的端点,它将失败。详细信息请参阅 unix(7)。 |
注意
|
IPC pathname 的最大大小取决于操作系统。在 Linux 上,最大长度为 113 个字符,包括 "ipc://" 前缀(实际 pathname 为 107 个字符)。 |
解除套接字的通配符地址绑定
当在 zmq_bind() 中使用了通配符 *
'endpoint' 时,调用者应使用从 ZMQ_LAST_ENDPOINT 套接字选项获取的真实 'endpoint',通过 zmq_unbind() 解除此 'endpoint' 与套接字的绑定。
连接套接字
使用 'ipc' 传输方式通过 zmq_connect() 将 'socket' 连接到对等地址时,'endpoint' 应被解释为标识要连接的 'pathname' 的任意字符串。该 'pathname' 必须是先前通过使用 zmq_bind() 将其分配给 'socket' 而在操作系统命名空间内创建的。
示例
// Assign the pathname "/tmp/feeds/0" rc = zmq_bind(socket, "ipc:///tmp/feeds/0"); assert (rc == 0);
// Connect to the pathname "/tmp/feeds/0" rc = zmq_connect(socket, "ipc:///tmp/feeds/0"); assert (rc == 0);
作者
本页面由 0MQ 社区编写。要进行更改,请阅读 0MQ 贡献政策:https://zeromq.cn/how-to-contribute/。