问题标签 [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.

0 投票
4 回答
494 浏览

c++ - _locking() 究竟做了什么?

寻找这个问题的答案我找到了函数_locking()。那里告诉它Locks or unlocks bytes of a file(实际上我无法理解这句话的真正含义)。如果有人有使用此功能的经验,是否可以使用该功能解决第一个问题中描述的问题?

0 投票
1 回答
271 浏览

vb.net - 如何避免 Assembly.LoadFrom 阻塞?

我使用 codedom 即时创建了一个 .net dll,然后使用 Assembly.LoadFrom 加载它,如下所示:

它只工作一次。如果我尝试重新编译 test.dll,我会收到文件已使用且不可写的错误。我试图将 ASM 设置为空 -如何从内存中卸载加载的程序集?

0 投票
4 回答
17130 浏览

c# - File.Open 在 Windows 中执行文件时拒绝读取访问

在遵循论坛提示 [1] 后,我在 Windows 中执行文件时遇到文件权限问题,但我不明白为什么。也许你们可以帮忙。

我通过执行文件(读取控制台输出)来检查文件的横幅,然后使用 FileStream 打开同一个文件以供读取:

每隔一段时间我就会得到“文件正在被另一个进程使用”。从 Wikipedia 我知道 Windows 将锁定执行拒绝写访问的文件 [2],但我只是在阅读。当我尝试打开它时,该过程应该已经停止。

从论坛帖子看来,添加 FileShare.ReadWrite 会有所帮助,而且似乎确实如此:

但我不明白为什么。这里有我看不到的比赛条件吗?

此外,使用 FileShare.ReadWrite 而不是默认值(我猜是 FileShare.Read),File.Open 调用似乎要快得多。

[1] http://www.xtremevbtalk.com/archive/index.php/t-192118.html

[2] http://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows

0 投票
1 回答
366 浏览

linux - 带有咨询锁的 linux 中的文件备份

当Linux中的文件锁定主要是建议性的时,备份程序如何确保它们获得文件的一致副本?

例如,如果其他一些进程不尊重文件锁定并写入文件,我如何创建该文件的一致副本?

0 投票
2 回答
329 浏览

c - POSIX 系统清除未完全解锁的文件锁的顺序是什么?

状态的POSIX 规范fcntl()

当该文件的文件描述符被该进程关闭或持有该文件描述符的进程终止时,应删除与给定进程的文件关联的所有锁。

这个解锁被终止进程持有的文件段锁的操作是否是每个文件的原子操作?换句话说,如果进程锁定了文件的字节段 B1..B2 和 B3..B4,但在终止之前没有解锁这些段,那么当系统开始解锁它们时,就是段 B1..B2 和 B3。 .B4 既能解锁,又能锁定fcntl()文件段的另一个操作成功吗?如果不是每个文件的原子,系统解锁这些文件段的顺序是否取决于最初获取文件段的顺序?

的规范fcntl()没有说,但可能在 POSIX 规范中有一个一般规定,该规定要求在进程不干净退出或崩溃后清理操作的确定性顺序。

0 投票
2 回答
918 浏览

c++ - 调用 LockFileEx() 时访问冲突

我有一个 FileMapping 类,它允许我使用 Win32 API 函数LockFileEx()锁定一个文件以供我的进程独占使用。

每当我接到LockFileEx()电话时,我都会遇到访问冲突:

tftpServer.exe 中 0x7466c2ec 处未处理的异常:0xC0000005:
访问冲突读取位置 0x00000008。

文件句柄m_fileDesc绝对是一个有效的句柄(使用该句柄将文件映射到内存中),并且m_mappingLength只是size_t包含映射文件部分的长度(以字节为单位)。

有人知道如何解决这个问题吗?

0 投票
0 回答
2012 浏览

mongodb - MongoDB 无法在 NFS 共享上分配数据文件

背景:
我使用 Vagrant (http://vagrantup.com/) 创建一个用于开发的虚拟机。我使用名为 Buildout 的 Python 构建系统来管理和构建我的项目。我使用安装和配置 MongoDB 的 Buildout 配方。它将 MongoDB 数据放入项目中的目录中。当不使用虚拟机时,这一切都很好。Vagrant 已设置为源代码存储库存在于主机上,并由虚拟机通过 NFS 访问。

我想做什么:
我想以流浪用户(在来宾操作系统中)运行 mongod,并在 NFS 共享中拥有数据目录。尝试像这样启动服务器会导致错误:

mongod 无法创建数据文件。错误消息是“警告:posix_fadvise 失败 /nfs_share/mongodb/data/local/local.ns errno:1 Operation not allowed”。这最初表明文件权限是错误的。我不认为它们是因为数据目录是组可写的,而 vagrant 在组“dialout”中,该组是 NFS 共享的组所有者。我的第二个猜测是 NFS 是罪魁祸首。当我在不是 NFS 的文件系统上运行此命令时,一切正常。我不确定出了什么问题。在 MongoDB 邮件列表上的搜索发现了一条消息 ( http://groups.google.com/group/mongodb-user/browse_thread/thread/4129325d3a9a3237 ),有人说如果数据目录不支持,NFS 将无法与 MongoDB 一起工作。 t 支持排他锁。

可能的解决方案:
在存储库中放置一个符号链接,指向非 NFS 位置的数据目录

  • 这就是我目前正在做的事情。这不是很好,因为它不适用于 Buildout 配方,必须手动完成。
  • 没有简单的方法可以确定 Buildout 是否在虚拟机中运行。也许它可以检测文件系统是否为 NFS 并被编写相应的脚本?
  • 将项目的组件放在不同的地方有点烦人。相反,Postgres 数据在别处,为什么不把 MongoDB 数据也放在别处呢?

问题:

  • 我看到的错误实际上与 NFS 有关吗?还是有其他可能的原因?
  • 排他锁是 NFS 的一个特性吗?可以启用/禁用吗?
  • 我在 MongoDB 邮件列表上阅读了有关人们在 NFS 上运行 MongoDB 的报告。是否有任何特殊考虑需要这样做?
0 投票
1 回答
152 浏览

database - 从同时包含数字列表的文件中获取唯一数字

我有一个文件中唯一编号的列表。每当我网站的用户发出请求时,我都需要从该列表中获取一个值,这样其他用户就不会获得相同的值。可能有许多并发请求,因此主要问题是保证没有两个用户获得相同的值。我并不关心性能,因为用户在发出请求后不会期望任何回复,因此一切都可能在后台发生。根据我的阅读,这可以使用文件锁来实现,或者我可以将数据存储在数据库中并使用数据库锁。我只是想知道做这件事的最佳方法是什么。我正在使用 postresql 作为我的数据库,并且想知道这是否可以使用我在序列中存储当前行号的序列来完成,以便我的程序知道从数据库中读取哪一行。

0 投票
0 回答
155 浏览

php - 在有人写入文件时跳过读取/写入文件?

我怎么知道是否有人正在写入文件,所以我可以跳过写入或读取它?这里可以使用文件锁定,但是发现了一些问题!像这样:https ://bugs.php.net/bug.php?id=54453

还有其他想法吗?

我想跳过对文件的写入/读取,而无需等待文件被解锁,就像LOCK_EX或中的情况一样LOCK_SH,代码挂起直到文件被解锁!

0 投票
3 回答
1378 浏览

java - 处理文件锁定,当应用程序意外退出时

我正在研究锁定 Java 应用程序使用的某些文件的最佳(跨平台)方法。

最坏的情况是程序意外退出(用户强制终止,或不干净的退出)。在这种情况下,确保文件锁被释放的最佳方法是什么,这样它们就不会影响程序的任何后续访问?

我看过使用 FileLock,但不干净的终止可能会使文件处于锁定的不可用状态。

有没有办法用代码解决这个问题?是在第一次“清理”时发现此类问题,还是在程序的后续运行中发现这些问题?