1

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

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

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

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

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

4

1 回答 1

1

由于“请提出 X”的性质,这个问题可能会被否决/标记。

也就是说,如果每个变量的文件是您所追求的,您可能需要考虑实现一个 FUSE 文件系统,该系统包装您的 SPI 驱动程序/实用程序“Q”(或者如果您要编译/将其构建为“Q”)控制源到“Q”)。我这样做是为了将设置存储在当前工作项目的 EEPROM 中,结果很好。因此,例如,我有一个文件,该文件在读取时从 EEPROM(或缓存副本)中检索 6 个字节,以 std hex/colon-separated notation 提供 MAC 地址。

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

这样做的另一个巧妙功能是您可以使用inotify(它是“免费的”,在 fusefs 中没有额外的代码)来创建有效检测设置何时更改的应用程序。

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

于 2015-09-10T19:17:39.327 回答