问题标签 [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 回答
1151 浏览

spring-integration - 使用通用 FS 跨多个节点锁定文件

我们有一个 spring 集成应用程序,它在多个节点的集群中运行。NFS 驱动器安装在所有节点上,并且可供所有节点读取。

在 NFS 上,有一个文件夹正在被file:inbound-channel-adapter所有节点监视,轮询间隔为 5 秒。

问题是 1)一个节点不应该拾取已被其他节点拾取的文件

2)如果一个文件被一个节点上的线程拾取,在轮询间隔之后运行的第二个线程不应该拾取它 - 我已经 AcceptOnceFileListFilter 为这个准备好了,但想知道是否有更好的方法。

我们已经看过的选项之一:

1)在数据库中创建一个具有唯一文件名的记录,并且每个其他节点在开始处理之前检查同一个数据库

还必须看看 NIOLocker - 但需要一些关于它的可靠性和在这种情况下可能的选项的输入。

0 投票
1 回答
112 浏览

unix - limit the number of children and descendants processes

I have to use fork() recursively, but limit the number of forked processes (including children and descendants) to (for example) 100. Considering this code snippet:

How to implement number_of_processes() and number_of_processes_minus_one()? Do I have to use IPC? I tried to pre-create a file, write PROC_MAX into it and lock-read-write-unlock it in number_of_processes() but it still eat all my pids.

0 投票
2 回答
7497 浏览

java - How wait and get lock on file

I want wait till other program releases lock on particular file, then I want to proceed to open that unlocked file.

I came across many solutions, but none are useful, here is my code -

I know when I will be running this code, file will be locked by some other Windows process, so I want to wait till other process releases lock and then I will proceed with unlocked file. If I try to open locked file I will get FileNotFoundException like "(The process cannot access the file because it is being used by another process)".

In above code I can't wait for getting lock because same exception will be thrown in line "channel = new RandomAccessFile(file, "rw").getChannel();"

Please help me on this, basically I want to get notified that other process has released lock on file, and till that time, I want to wait().

0 投票
1 回答
1037 浏览

java - FileChannel tryLock() 方法是检查锁还是只是破坏它们?

我有两个进程可以同时访问同一个文件并希望实现文件锁定。问题似乎是一个进程是用 java 编写的,另一个是用 C 编写的,并且不清楚在 java 端是如何实现低级锁定的。平台是 Solaris 10。我试图在文件上引入锁定,以防止 Java 进程在 C 进程读取文件时进行更新。我的想法是尝试从 java 代码中获取锁 10 次,然后才无条件地写入文件(我假设锁类型是咨询锁)。但是,java tryLock() 在第二次尝试时会破坏 C 进程的锁定并破坏读取。

这是简化的代码(Java):

C 代码使用 fcntl:

tryLock()真的检查锁吗?

0 投票
0 回答
1444 浏览

linux - 锁定通过 FTP 打开的文件?

我想锁定通过 FTP 打开的文件,所以一旦文件被编辑(在 OSX 中安装的 FTP 文件夹上),其他人就不能: - 保存它(必要) - 打开它(可选)

有没有人有关于如何做到这一点的任何提示?我知道这可能是骗人的,因为当您打开文件时,它只是将其复制到本地,然后重新上传。

0 投票
1 回答
445 浏览

java - Windows vs OSX FileLock OutputStreamWriter

我编写了一个访问文件的 java 应用程序,而其他 VM 中的其他进程尝试执行相同操作。因此我使用 FileLock 类:

在 Mac OSX 上一切正常,但是当我在 Windows 7 上运行代码时,它会在该行抛出一个 IOException

, 尝试冲洗时。

据我了解FileLock 如何工作?, 实际获得的锁

禁止我访问它,因为另一个进程(显然是这个)具有排他锁。

现在这让我觉得很矛盾——当获得锁的实际行为阻碍我这样做时,我如何获得一个独占锁以使我能够写入文件而不会有其他进程弄乱它的危险?

因此,为什么它可以在 Mac OS 上运行而不是在 Windows 上运行?我从 JavaDocs 中知道 FileLock 类存在操作系统特定的差异和困难,但肯定不是针对其设计的功能。既然不能这样,我做错了,这就是我请求你帮助的地方。

谢谢,米

0 投票
4 回答
6738 浏览

java - 如何在安卓上使用 FileLock?

我认为我们能够锁定文件以进行独占访问,因为我看到了这个链接:http: //developer.android.com/reference/java/nio/channels/FileLock.html

我想在后台进程(服务)和真正的前台应用程序中创建一个保存/加载文件。他们可能会尝试同时访问此文件,在这种情况下,应该等待。

我在 android 上找不到 FileLock 的真实示例,我刚刚阅读了许多线程,这在 Android 上是不可能的。但如果是这样,为什么文档中有一个“FileLock”部分?

0 投票
3 回答
239 浏览

c# - C#文件在制作后被锁定

我正在制作一个 Windows 服务,其中一部分是使用 FileStream 和 StreamWriter 制作一个 .eml/txt 文件,它运行良好,可以完成我需要它做的所有事情。唯一的问题是它生成的新文件由于某种原因之后仍然被服务使用,我不知道为什么。有什么线索吗?修复?

我认为它必须与 FileStream 和 StreamWriter 有关,因为它们是唯一接触新文件的东西。提前致谢!

服务1.cs

程序.cs

0 投票
3 回答
1340 浏览

c - c windows多线程文件锁

在 Windows 上,是否有任何简单的方法可以在多线程 C 代码中以独占方式(为我的软件读取和写入)锁定文件?我已经尝试过 LockFileEx,但它仅适用于进程之间,而不适用于线程(同一进程)。

注意:我的问题是我做了一个小文件服务器(多线程),当一个文件请求到来时,三分之一的“A”必须以独占方式访问请求的“file1.txt”,但如果另一个线程“ B”想要相同的“file1.txt”,它必须等待才能使用此文件。如果线程“A”使用 dwSharedMode 为“0”的 CreateFile() 来打开/创建“file1.txt”,确保只有它读取或打开此文件,如果线程“B”尝试打开“file1”,则会发生错误。文本”。现在线程“B”如何等待“file1.txt”?

0 投票
2 回答
1692 浏览

c# - 无法构建我的服务:无法复制文件,因为它正被另一个进程使用

我在 c# .net 中构建了一个 Windows 服务。我添加了 Pre-Build 和 Post-Build 事件以在构建上自动部署我的服务。但有时我得到这个错误:

无法将文件“[CompletPath...]\bin\Debug\Business.Data.dll”复制到“bin\Debug\Business.Data.dll”。该进程无法访问文件“bin\Debug\Business.Data.dll”,因为它正被另一个进程使用。

在 Pre-Build 事件中,我将关闭服务,杀死所有使用 Debug 目录中文件的任务并卸载服务。我在 Pre-Build 事件中运行的 .bat 中有代码:

在我正在安装和启动服务的构建后事件中,即使这不是问题,也有代码,因为我在构建时遇到了错误,所以构建后事件没有执行。

我并不总是有问题。我通常在第一次构建时遇到问题,我正在清理解决方案,再次构建并且通常它在此之后工作。