c++ - 从 root 特权进程创建可访问文件
问题描述
我有一堆来自不同权限的进程,所有进程都运行一个共享代码,该代码使用带有“a+”标志的 fopen_s 打开(并在需要时创建)一个用于写入的文件。
但是,由于没有提供给该命令的权限,并且根进程首先创建该文件,因此其他非根进程无法访问该文件。
我可以使用int open(const char *pathname, int flags, mode_t mode);
并因此控制文件权限(由 mode_t 表示)以允许所有人访问,但我需要文件描述符 ( FILE *
) 而不是 fileID。所以我可以FILE *fdopen(int fd, const char *mode);
用来进行转换。
也许有更直接的方法可以做到这一点?
解决方案
不,您描述的技术(open
后跟fdopen
)是实现您想要做的事情的正确方法。正如一些程序员老兄指出的那样,您可以chmod
在程序创建后调用以更改文件权限,但这是一种更迂回的方式。
推荐阅读
- docker - 无法在 docker 容器中运行 jupyterhub
- python - 在 Pandas 中将字符串转换为时间
- python - 建议的最大任务大小为 100 KB 如何使用 python spark 解决此问题 如何在 python pyspark 中解决此问题
- qt - 如何读取 main.qml 中的 listmodel 角色属性?
- excel - 如何从 MSHTML.IHTMLElementCollection 中选择特定表
- excel - Excel Pivottable 刷新(2010 与 2016) - 为什么在 2016 年不工作,但在 2010 年工作?
- sql - Postgresql 约束在时间戳之间没有重叠
- angular - 在父组件中显示搜索结果
- typescript - TypeScript 泛型:泛型属性的联合
- business-process-management - 使用 REST API 在 IBM BPM 8.6 上获取文档属性