gpt4 book ai didi

c++ - 等待文件存在且不被其他人占用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:09 25 4
gpt4 key购买 nike

问题

如何监控我的文件系统以在创建后立即读取文件。这将适用于基于 Linux 的系统,但如果解决方案是跨平台的,那就太好了。重要的要求是,不应该有任何其他文件描述符可以写入该配置文件。

我读过 inotify但这不是跨平台的,需要很多知识。我对新的 c++17 文件系统模块很好奇。

我可以通过简单的 while(!fileexist(fielanme)) sleep(1); 但我对更成熟的解决方案感到好奇

背景

我正在编写可以从 API (REST) 配置的应用程序。但是一旦配置就可以轻松启动(存储配置文件)。

所以我认为这是将此任务分为两个的好方法:

  1. REST -> 只需使用 conf 创建文件。
  2. Main 等待文件存在,并在读取配置时阻止其他文件以写入模式打开。

最佳答案

没有跨平台的方式来做到这一点。最好的方法是将文件写入临时名称,然后将其重命名为应用程序正在查找的文件。在大多数操作系统上,rename() 操作是原子的。然后阅读应用程序可以简单地等待文件存在。

所以你的等待代码的结构可能是(这是伪代码):

while (true) {
if (file_exists(filename)) {
process the file
remove the file
}
sleep(wait_time);
}

关于c++ - 等待文件存在且不被其他人占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com