等待文件存在并且不被其他人占用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了等待文件存在并且不被其他人占用相关的知识,希望对你有一定的参考价值。

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

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

我可以通过简单的qazxsw poop来做到但我对更成熟的解决方案感到好奇

背景

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

所以我认为这是将这项任务分成两部分的好方法:

  1. REST - >只需用conf创建文件。
  2. 在读取配置时,主要等待文件存在并且在写入模式下由其他块打开文件。
答案

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

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

rename()

以上是关于等待文件存在并且不被其他人占用的主要内容,如果未能解决你的问题,请参考以下文章

java怎么删除被进程占用的文件

mysql行锁等待异常

java 多线程怎么深入?

如何在我的代码中等待来自其他地方的异步链的最终结果?

Kotlin 协程的作用域构建器 coroutineScope与runBlocking 与supervisorScope,协程同步运行,协程挂掉的时候其他协程如何不被挂掉。

片段事务中的实例化错误