Unix中的共享内存

时间:2011-09-24 18:51:08

标签: ipc

我在Unix中创建一个可以独占访问串口“/ dev / tty01”的守护进程。我打算创建一个Master - Slave进程范例,其中有一个master(守护进程)和多个slave。

我在考虑在“共享内存”中有一个结构,奴隶可以访问该结构,并且内存中只有一个编写器,因此我很可能不需要信号量。数据将相当缓慢地更新,例如每分钟更新一次。

我正在研究什么是最好的方法来做到这一点,如果我在共享内存中有一个结构,我怎么能保证结构在内存中是连续的?这是我必须拥有的要求。

谢谢

1 个答案:

答案 0 :(得分:0)

在这种情况下共享内存很难,因为你需要在主人写作时锁定读者,并在仍有读者时让作家等待。

更容易让主人写入临时文件(在同一目录中)并在准备好后将其重命名为最终名称(重命名为原子)。 这假定客户端定期打开()和fstat()文件以检查自上次读取以来是否被触摸过。

另一种方法是避免文件,让master只维护自己的内部数据结构并打开一个(listen)套接字,open()只是吐出它当前拥有的所有数据。无需锁定。