Linux 中的持久存储值处理

Persistant storage values handling in Linux

我的嵌入式板上有一个 QSPI 闪存。 我有一个驱动程序 + 进程 "Q" 来处理读写。 我想存储软件版本、IP、运行时间等变量

我想征求建议如何处理从用户 space 和其他进程写入和读取值的不同访问权限。

我想为每个变量创建一个文件。然后我可以为这些文件分配访问权限,如果值已更改,进程 Q 可以更改文件中的值。所以进程Q只能写入,其他进程或用户只能读取。

但是我不会写。我正在考虑使用消息队列或 zeroMQ 并围绕它构建软件,但我不确定它是否过大。但我不确定如何管理访问权限。

最好的方法是什么?如果您能提出完全不同的方法,我将不胜感激。 谢谢!

由于 "Please suggest an X" 的性质,这个问题可能会被否决/标记。

就是说,如果每个变量一个文件是您所追求的,您可能需要考虑实现一个 FUSE 文件系统来包装您的 SPI driver/utility "Q"(或将其构建到"Q" 如果你到达 compile/control 源到 "Q")。我这样做是为了将设置存储在当前工作项目的 EEPROM 中,结果很好。因此,例如,我有一个文件,该文件在读取时会从 EEPROM(或缓存副本)中检索 6 个字节,并以标准 hex/colon-separated 表示法提供 MAC 地址。

这里最大的优势是,从 shell 脚本(例如您的 init 进程)或其他脚本语言访问所有配置/设置数据变得微不足道。

这样做的另一个巧妙功能是您可以使用 inotify("free",fusef 中没有额外的代码)创建可以有效检测设置更改时间的应用程序。

这种方法的一个缺点是在多个设置上执行原子事务并仍然保持正常的文件语义是非常重要的。