问题标签 [file-locking]
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.
java - java 5 和 java 6 之间的 FileLock 变化
在 Java 1.5 中,java.nio.channels.FileLock 不会检查已锁定的文件。参考这里
该片段指出:
java.nio.channels.FileLock 类检查已被其他 FileChannel 实例锁定的文件
如果应用程序尝试锁定与通过另一个 FileChannel 实例锁定的区域重叠的区域,Java SE 6 将引发 OverlappingFileLockException。以前的版本不检查其他 FileChannel 实例获得的文件锁。默认情况下,java.nio.channels.FileChannel.lock 方法检查请求的锁是否与此 Java 虚拟机持有的区域重叠。
因此,在 Java 6 之前的版本中,如果您有多个程序写入同一个文件(每个程序都试图获得一个独占锁),则独占文件锁定不起作用。人们是如何使用 Java 5 及之前的版本解决这个问题的?
perl - 有没有办法在 Perl 中创建一个在创建时被锁定的文件?
我需要在创建时创建一个锁定读取的文件,以便其他可能寻找该文件的进程在完全写入之前不会开始读取它。
我知道我可以创建然后锁定它,但我担心这会让我面临竞争条件。
还是我在这里什么都不担心?如果我打开一个文件进行写入,然后打开它以使用另一个进程读取,那么在写入过程关闭文件之前,读取过程是否永远不会看到 EOF?
asp.net-mvc - 防止带有图像的 IIS7/ASP.NET 锁定目录
我有一个使用 ASP.NET MVC 2 框架的 ASP.NET webapp。它允许用户将文件上传到上传文件夹。当 Web 浏览器访问子文件夹中的图像时会出现此问题:
uploads 文件夹是静态的,用户不能修改,但它下面的任何内容都是可修改的。
在上面的示例中,image_gallery 文件夹被锁定,因为 w3wp.exe 似乎在 sub_folder 目录上创建了一个句柄(使用 sysinternals 的进程资源管理器)。我仍然可以重命名 sub_folder 目录,并且在重命名后句柄似乎仍然存在,但我无法重命名父文件夹(在这种情况下为 image_gallery)。
我仍然可以在文件夹中浏览并查看其他图像和文件等。但无法重命名父文件夹。
由于这是使用 MVC 2 框架,我已经为上传文件夹添加了一个排除项,如下所示:
进入 global.asax,所以我假设 ASP.NET 直接提供这些图像(在 MVC 框架之外)
所以我想我的问题是,有没有办法阻止 IIS 将句柄放在特定目录上或强制它删除句柄?即使我指定了 ignoreroute,MVC 2 框架是否在做一些棘手的事情?
提前感谢您的任何提示!
c# - 图像文件处理后不释放
我正在研究一个下载一些图像并将它们放在 arrarList 中以便稍后处理的项目。以下代码部分是问题所在。它适用于第一次下载,但以某种方式保存的文件图像在第一次下载后被锁定。我似乎找不到解锁它的方法。File.Delete("BufferImg"); 当“BufferImg”未在程序的其他任何地方使用时,给出错误说明该文件已被另一个进程使用。我究竟做错了什么?
}
php - 如何使php脚本并行运行?
脚本1.php
脚本2.php
我在浏览器中运行 script1.php,在另一个浏览器窗口中运行 script2.php 之后。script2.php 中的 session_start() 在 script1.php 未完成执行之前无法执行。
为什么会发生以及如何使 php 脚本并行运行?
c# - 将图像存储在 arrayList 中
这是我想做的事情:线程 B 将下载一些图像并将这些图像存储在共享资源中:静态 ArrayList IMBuffer;线程 A 将从 IMBuffer 中获取图像并对其进行处理。以下是我得到的:
线程 B:
// 做点什么
// 做其他事情
线程 A:
这是我遇到的问题;由于 IMBuffer 中的图像是使用文件流打开的,因此在处理流时,该行:nextImg.Save(DLedIM); 导致“文件被另一个进程使用”错误。但是,如果 fs.Dispose(); 注释掉该行,则程序锁定“BufferImg”,结果第一次后无法将图像下载到“BufferImg”。我应该怎么做才能解决这个问题?或者有没有更简单的方法来完成我想做的事情?
parallel-processing - 如何使用大中央调度有效地实现文件区域锁定?
对于我的项目,我正在从多个线程读取和写入文件,因此我需要实现文件锁定。我已经尝试过fcntl()
,但是似乎该功能仅适用于进程之间的锁定,而不是线程之间的锁定。因此,我正在寻找另一种解决方案。我想出的解决方案(这可能不是最好的)是在我的文件中的每条记录中都有一个字节来指示记录是否被锁定,然后我可以使用繁忙的循环来读取和检查字节。
所以,我有两个问题。首先,实现文件区域锁定最有效的方法是什么?其次,如果我使用繁忙的循环方法,我如何通过大中央调度来优化它?我在想我可以让所有繁忙的循环都发生在发送到的块中dispatch_sync()
。但我不知道这是否会有效地工作。
谢谢。
php - 不使用flock在PHP中锁定文件
当用户上传文件时(用户可以上传多个文件)
我正在使用nohup
它,因为它需要在后端执行。
在我的原始设计中,每次执行时都会run.php
扫描目录。scandir
获取文件的排他锁LOCK_EX
,如果文件有锁,则flock
使用LOCK_NB
它跳过文件并转到下一个。如果文件有锁//Do logic
。问题是服务器缺少fcntl()
库,并且由于flock
使用该库来执行锁定机制,flock
因此目前无法正常工作。安装它需要一两个月的时间(我无法控制)。
所以我的解决方法是有一个临时文件 lock.txt 充当锁。如果文件名存在于 lock.txt 中,则跳过该文件并转到下一个文件。
如何从中删除文件名lock.txt
?
更重要的是,有没有更好的方法在不使用 php 的情况下锁定文件flock
?
php - 同时执行脚本if-else问题
我目前无法使用flock
(服务器限制),所以我正在创建一个替代文件锁定系统。这是我的代码。
如果我并排运行这些脚本。它在执行第二个脚本之前等待第一个脚本完成。我怎样才能同时运行它们?即如果存在锁,我希望它跳过该文件并转到下一个。
c++ - 如何使用 C++ 在 Windows 中锁定文件?
如何将 Windows 中的文件锁定为只有当前线程(没有来自同一进程的其他线程,也没有其他进程)可以访问(读/写)该文件?
如果可能,请告诉我一些类似 fcntl 的解决方案(锁定具有其描述符的文件的解决方案)。但无论如何,也欢迎其他解决方案。