Linux 上的进程间通信 (IPC)
本章概述了 Linux 系统上的进程间通信 (IPC) 机制。所描述的机制既适用于通用 Linux 进程之间的 IPC,也特别适用于一个或多个进程之间的 IPC CODESYS Control SL 运行时系统和其他进程。
下面列出的机制由基于 Linux 的抽象并提供 CODESYS 运行时系统通过 CODESYS 图书馆。
机制 | 目的 | 相关 CODESYS 图书馆 | 注意事项 | 典型 Linux API |
|---|---|---|---|---|
共享内存 | 进程同时交换大量数据。 |
|
|
|
POSIX 信号量(同步机制) | 控制对共享资源的访问权限或流量控制 |
| IEC 应用程序中的阻塞代码不应在循环操作和循环式 IEC 任务中造成较大的延迟。 |
|
套接字(UDP、TCP、Unix 域套接字) | 在本地或跨主机交换消息(基于流或基于数据包) |
|
|
|
使用说明
独立于技术:
IPC机制不受特定技术的约束。这些技术可以以任何方式组合。流程可以在不同的语言或运行时环境中实现,例如:
原生二进制文件 (C/C++)
Python 脚
Java 应用程序
IEC 代码来自 CODESYS
IEC 应用程序的模块化提高了可维护性、容错能力和可扩展性:
即使对于单个大型 IEC 应用程序,IPC 也可以将其分解为功能单元,例如:
动作
现场总线
可视化
数据交换/导出
缺少原生接口时的好处:
当所需技术中没有所需的 API 时,可以使用 IPC。
示例:Python 库包含必需的功能,但不能直接用于 IEC → 通过 Unix 套接字或共享内存进行通信。