问题标签 [filelock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1697 浏览

c - 通过 C 中的 NFS v4 进行文件锁定租约

有人知道如何使用 NFS v4 的精美文件锁定功能吗?(在例如关于 NFS 协议(向下滚动)中进行了描述)。据说 NFS v4 支持 45 秒生命周期的文件锁租赁。我愿意相信 linux 内核(我使用的是 gentoo 2.6.30)会愉快地处理这些细节,并且我可以使用fcntl()它,而且一切都会被洗掉。然而,我猜测我必须以某种方式做一些特别的事情来获取、维护和释放锁租约。所有帮助表示赞赏。

0 投票
5 回答
1499 浏览

c# - C# - 在浏览器关闭、用户离开页面或会话到期之前锁定文件

在浏览器关闭、用户离开当前页面或会话到期之前,有什么方法可以锁定文件?

我有一个 java 应用程序,它从文本文件中读取注释,并允许用户通过 java 应用程序修改或添加更多注释到 pdf。完成后,他们单击“保存”,完整的注释文件将返回到其原始数据文件。

问题是两个人可以打开同一个注释文件并执行不同的更新。然后,每次保存时,它们都会覆盖现有文件,以便只保存第二个用户的更改。

理想的解决方案是让 1 个人“签出”文件进行编辑,进行修改,直到他们关闭窗口、离开页面或会话到期,然后文件将自动“签入”。在 C# 中有什么方法可以做到这一点?谢谢!

0 投票
3 回答
37953 浏览

java - 用于读写的 Java FileLock

我有一个进程会经常从 cron 调用,以读取其中包含某些与移动相关的命令的文件。我的进程需要读取和写入此数据文件 - 并保持锁定以防止其他进程在此期间接触它。用户可以执行一个完全独立的过程来(潜在的)写入/附加到这个相同的数据文件。我希望这两个进程运行良好,并且一次只能访问一个文件。

nio FileLock 似乎是我需要的(没有编写我自己的信号量类型文件),但我无法锁定它以供阅读。我可以锁定和写得很好,但是在阅读时尝试创建锁定时,我得到了一个 NonWritableChannelException。甚至可以锁定文件以供阅读吗?似乎 RandomAccessFile 更接近我的需要,但我不知道如何实现它。

这是失败的代码:

在 FileLock 行上引发异常。

查看JavaDocs,它说

尝试写入最初未打开用于写入的通道时引发未经检查的异常。

但我不一定需要写信给它。当我尝试为写作目的创建 FileOutpuStream 等时,我很高兴直到我尝试在同一个文件上打开 FileInputStream。

0 投票
4 回答
311 浏览

perl - 我的 Linux 守护进程如何知道 Windows 程序何时停止写入我通过 SAMBA 访问的文件?

我正在开发一个与名为 Dazzle 的 USPS 运输包接口的系统。该系统的一部分包括一个监控守护进程,其目的是获取制表符分隔的值文件,将它们转换为 Dazzle 识别的 XML,并将它们传递给 Dazzle 以生成标签。这部分工作得很好。然而,我还想做的是解析 Dazzle 生成的输出文件并将其导入数据库。

请注意,Dazzle 在 Windows 上运行。我的监控守护程序是用 Perl 编写的,并在 Linux 上运行。我的 Linux 系统通过 Samba 挂载了 Dazzle 的输入和输出目录。

Dazzle 开始写入输出文件的时间和它完成的时间之间有一个可测量的延迟。我想知道的是如何等待 Dazzle 完成输出文件的写入?我试过打开文件并对其进行flock($fh, LOCK_SH)操作,但这似乎没有任何好处。

编辑:我有一个基于下面“mobrule”评论的想法。Dazzle 以 XML 格式编写输出文件。货件中的每个包裹都附在标签中,整个文件都附在标签中。因此,如果我在文件完成之前开始阅读文件,我可以在采取行动之前等待适当的结束标记。

另外,我应该提到我目前正在做的事情。当我检测到输出 XML 文件已创建时,我尝试对其进行解析。如果解析失败,我会睡觉并重试。如果失败,我会睡两倍的时间,然后再试一次,依此类推。这在 64 秒超时的测试中效果很好。

0 投票
2 回答
3682 浏览

c# - 在 c# 中使用 file.move 时文件锁定...如何停止或修复此问题

代码:

如果pending.txt 文件不存在,则在程序启动时创建它。此代码删除文件的第一行。当我调试代码时,我注意到

锁定文件,我无法再写入它。

0 投票
2 回答
1547 浏览

c# - .NET 隔离存储文件锁定引发 NRE

所以我试图在我的 C# 客户端应用程序中锁定一个隔离的存储文件,以便我的应用程序的多个副本无法同时访问它。我正在使用以下语法:

此代码导致我的应用程序从框架的 FileStream.Lock 方法内部抛出 NullReferenceException。我尝试使用非零值作为长度。我尝试将一个字节写入文件,然后仅锁定该字节。无论我做什么,同样的 NullReferenceException 一直困扰着我。有谁知道这是否可以通过隔离存储实现?

此外,我也在研究在 Silverlight 应用程序中使用这种技术,Silverlight 是否支持文件锁定?MSDN 文档似乎表明它没有,但我从 C# MVP 中看到这篇文章说它有。

更新:微软已经修复了我在 Connect 上提交的错误,但它并未在框架的第 4 版中发布。它应该有望在下一个 SP 或完整版本中提供。

0 投票
1 回答
4631 浏览

java - Java文件锁定机制(FileLock等)的问题

我正在创建一个用于打开和编辑 xml 文件的简单应用程序。这些文件位于应用程序的多个实例访问的本地文件夹中。我想要做的是锁定应用程序实例打开的每个文件,以便其他实例无法访问它。

为此,我使用以下代码:

函数无效读取文件(){

}

因为我想在这段时间内保持对正在编辑的文件的锁定,所以我没有关闭 raf 也没有释放 fl。

此时,尝试访问锁定文件的应用程序的任何其他实例都无法这样做。到目前为止,一切都很好。

我观察到以下奇怪的事情:

如果在获得文件锁定后,我在同一个文件上打开 FileInputStream,即使 FileLock 对象仍然有效(isValid 返回 true),应用程序的其他实例现在也可以访问正在编辑的文件。

我觉得这种行为很奇怪。谁能解释为什么会这样?

我希望以上内容有意义。提前致谢!

0 投票
4 回答
11531 浏览

java - Java:打开和读取文件而不锁定它

我需要能够用 Java 模仿“tail -f”。我正在尝试读取一个日志文件,因为它正在由另一个进程写入,但是当我打开文件来读取它时,它会锁定文件并且其他进程无法再写入它。任何帮助将不胜感激!

这是我目前正在使用的代码:

0 投票
3 回答
173 浏览

pdf-generation - 最安全的文件复制方式

我需要合并两个 PDF 文件。但是有时文件可能被锁定

我写了这段代码,但我想知道它是否不是最聪明的解决方案:

0 投票
6 回答
16463 浏览

c# - FileStream 保存文件然后立即在 .NET 中解锁?

我有这个保存pdf文件的代码。

它工作正常。但是,有时它不会立即释放锁,这会导致文件锁定异常,函数在此运行后运行。

是否有一种理想的方法可以在fs.Close()之后立即释放文件锁