共享内存主/从进程访问单个串口

Posted

技术标签:

【中文标题】共享内存主/从进程访问单个串口【英文标题】:Shared memory Master/Slave process to access single serial port 【发布时间】:2011-09-25 01:04:49 【问题描述】:

我正在 Unix 中创建一个可以独占访问串行端口“/dev/tty01”的守护程序。我计划创建一个主从进程范式,其中有一个主(守护进程)和多个从属。 我正在考虑在奴隶可以访问的“共享内存”中建立一个结构,并且内存只有一个写入器,所以我很可能不需要信号量。数据的更新速度相当缓慢,例如每分钟一次。 我正在研究什么是最好的方法,如果我在共享内存中有一个结构,我如何保证该结构在内存中是连续的?这是我必须有的要求。

主程序将有自己的内部数据结构,从串口更新,然后它会修改数据并将其发送到共享内存中的全局结构供客户端使用。

我在 Unix IPC 方面没有太多经验,但最简单的方法是什么?顺便说一句,客户端都是由系统本地其他用户运行的不同进程

它必须使用共享内存,这是项目的要求。另外,如果第二个结构具有不同的数据类型,是否可以将一个结构复制到另一个结构中?

【问题讨论】:

【参考方案1】:

    从您的进程看来,共享内存段是一块连续的内存。

    创建和处理共享内存的调用相当简单(shmctl/shmat/shmdt)

    内存中结构的布局由您决定。最好是像类型字段这样的固定标题,其余的作为联合。

    对于您的客户端进程,您可以提供一个带有一组函数的小库(静态或共享)来检索数据,从而隐藏共享内存和结构。

【讨论】:

以上是关于共享内存主/从进程访问单个串口的主要内容,如果未能解决你的问题,请参考以下文章

adb命令查看手机应用内存使用情况

从共享内存同时读取是不是安全?

共享内存实现原理

共享内存

c# 通过内存映射实现文件共享内存

Linux 进程间通信 --共享内存