检查共享内存段的最后修改时间

问题描述 投票:0回答:0

我正在为基于 linux 的操作系统上的多进程系统开发看门狗,它将简单地检查一段共享内存是否已在可配置的超时内写入。理想情况下,看门狗不必知道共享内存段的布局或内容,只需知道段 ID 或虚拟文件路径。

我已经尝试在虚拟文件上定期执行 stat(),但是当写入内存映射段时,

st_mtime
似乎没有更新,只有在创建文件时才更新,有关更多信息,请参见此处 .

我想到的最好的办法是在段的虚拟内存文件上执行哈希函数。每次写入段时,散列都会定期更改。然而,这有些麻烦和昂贵。虽然我可以使用来自主进程的一些内部信号,但我更愿意让看门狗专注于新数据是否已添加到共享内存段。有没有更好的方法来确定共享内存段的最后修改时间?或者,它在最近 N 秒内被修改过?

我主要使用 python,但如果某些必需的系统调用不能从 python 进行,也可以接受 C++。

c++ python-3.x linux multiprocessing shared-memory
© www.soinside.com 2019 - 2024. All rights reserved.