问题标签 [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 投票
2 回答
1488 浏览

version-control - 协同代码编辑

我在一家小型 Web 开发公司(6 人)工作,我们在市场上寻找新的代码编辑器/开发环境已经有一段时间了。

目前,我们正在使用 Dreamweaver 的 (CS3) 编码端进行网站开发。每个站点的文件都托管在 Dreamhost ftp 服务器上。我们 6 个人都在远程 ftp 服务器上处理同一组实时文件。Dreamweaver 有一个方便的文件锁定功能,通过阻止我们访问相同的文件来防止我们覆盖彼此的更改。

现在,我们发现这种开发形式可以实现非常快速的开发,并且喜欢将事情完成是多么容易。然而,有很多我们不喜欢的东西。其中之一是 Dreamweaver 的代码编辑器。我们也不喜欢每个站点都缺少代码历史记录。

有谁知道具有类似文件锁定/ftp 功能的 Dreamweaver 的良好替代品?

如果没有,您能否向我解释一下我们团队的源代码控制系统的最佳配置?我们愿意研究 GIT、Mercurial 和 Subversion。理想情况下,新系统将:

1)。在不同的操作系统上支持多种不同的代码编辑器。(Windows 第一选择。)

2)。几乎像目前一样轻松快速地推出代码。

3)。允许处理办公网络之外的文件。

4)。物美价廉。

我可能只是在展示我对如何使用版本控制系统的无知,但是对于我们每个人来说,在我们的计算机上拥有一个测试服务器并使用我们自己的测试数据库设置每个站点似乎是不合逻辑的......那是非常耗时

您对我们的问题有什么解决方案?我认为我们要么必须升级到最新版本的 Dreamweaver 并永远坚持下去,要么我们必须找到某种 ftp 协作编辑器,或者我们必须实施版本控制。

版本控制的好处是否超过了推出代码所需的额外时间?

0 投票
1 回答
1295 浏览

com - VB6 IDE 正在锁定已加载项目的 DLL

我负责维护遗留的 VB6 代码,并且遇到了一个关于锁定项目的 COM DLL 的烦人问题。(我们称之为MyProjectMyProject.dll

当我将MyProject加载到 VB6 IDE 中时,我能够编译生成的二进制兼容 DLL MyProject.dll。然后,我可以运行我的(经典 ASP)Web 应用程序,该应用程序与 DLL(或其他任何东西)挂钩。

因此,当我尝试重新编译 COM DLL 时,我收到“权限被拒绝”错误。然后我发现自己必须执行以下步骤才能解锁 DLL:

  1. 检查我没有在其他 VB6 IDE 中打开依赖项目
  2. 回收 IIS
  3. 检查文件不是只读的(有时如果我已将其签入源代码控制)
  4. 关闭项目并重新打开它。

通常它是解决问题的最后一步,并允许我重新编译,这意味着 VB6 IDE 实际上锁定了加载项目的 DLL!

我的同事向我解释说,这与 VB6 项目在 DLL 上具有二进制兼容性的工作方式有关,但无法提出解决方案。

我在其他地方的搜索在答案方面几乎没有产生什么结果。与此相关的搜索查询往往会返回许多不相关的答案(也许我问的是搜索引擎的错误)。

我在 Stackoverflow 上能找到的最接近的东西是几年前的这个问题,但它并不真正符合要求。

有没有人有任何其他建议可以改善这种情况?

0 投票
4 回答
160 浏览

c - 如何确保当我的进程对文件进行操作时,没有其他进程尝试写入或删除它?

如果我的进程正在尝试从文件中读取,那么我如何从我的代码(C 语言)中确保没有其他进程写入或删除它(包括用于删除文件的系统命令)?

此外,这可以在所有操作系统(Windows、Linux、Solaris、HP-UX、VxWorks 等)上实现吗?

0 投票
2 回答
1246 浏览

c# - 锁定文件以从 Windows 服务写入

我想锁定一个文件以从 Windows 服务写入,但到目前为止,我尝试获取锁定的尝试都不起作用。不过,相同的代码也适用于控制台应用程序。

根据我的阅读,这是因为我的服务没有启用机会锁定。

如何通过将文件从服务中锁定而不诉诸注册表黑客来防止文件被写入?

锁定代码:

解锁代码:

0 投票
1 回答
515 浏览

perl - 使用 Perl 进行非阻塞文件锁定的 CPAN 模块

我想确保一次只运行一个进程。所以我想确保 jobB 不会运行,除非 jobA 没有运行。

如果它具有重试锁定的能力,那就太好了,这样我就不必编写代码了。有点像这样:

在 Perl 中执行此操作的最佳方法是什么?我希望有一个很好的 CPAN 模块。

0 投票
1 回答
1134 浏览

javascript - 在 javascript 中使用 scripting.filesystemobject 并检查锁定的文件

我有一些使用activex文件系统对象从Javascript中的ini文件读取的代码。

这不是特别有效,但可以完成工作,将整个文件读入数组,附加任何更改并回写。

我遇到的问题是另一个进程,一个 C# XBAP 应用程序正在读取这个 ini 文件(使用 getprivateprofilestring),同时我可能试图在 JS 中写入它。

由于文件被锁定或部分文件被锁定,javascript 失败,并且文件最终被损坏甚至完全清除 - 因为我每次都试图写回整个文件。

最好,我需要一种确定文件是否被 javascript 锁定的方法,因为写入并不紧急,我想让任何读取首先完成。

似乎无论如何都找不到同步这两种完全不同的访问文件的方式。

0 投票
2 回答
854 浏览

.net - 我可以使用 FileStream 来实现文件锁定吗?

我可以使用FileStream构造函数来确保一次只有一个进程访问文件吗?下面的代码会起作用吗?

特别是,FileMode.Create原子 WRT 的行为是其他进程吗?还有什么我应该使用的吗?

编辑:更具体地说,这是在 Microsoft CLR 上使用单台机器上的本地文件。

0 投票
2 回答
2486 浏览

python - 防止文件被打开

我正在编写一个 Python 记录器脚本,它以下列方式写入 CSV 文件:

  1. 打开文件
  2. 追加数据
  3. 关闭文件(我认为这是保存更改所必需的,以确保每次日志记录后的安全。)

问题
该文件可以通过 Windows 资源管理器访问(我使用的是 XP)。如果文件在 Excel 中打开,则 Excel 会锁定对它的访问。当脚本尝试追加数据时,显然它失败了,然后它完全中止。

目标:
有没有办法使用 Python 锁定文件,以便对它的任何访问仍然是脚本独有的?或者我的方法一开始就很差?

0 投票
2 回答
325 浏览

c++ - 与文件锁定一起使用tellp是否安全

提升文件锁定(可共享和作用域的file_locks)的一般策略,以及我认为的一般文件锁定,是这样的:

  1. 打开
  2. 对文件内容进行操作
  3. 开锁
  4. 关闭文件

但是,我将打开文件进行追加,并想调用 tellp 来查看我在哪里。在上述情况下这样做安全吗?在锁定之前打开文件后是否会立即设置文件指针,因此可能不受保护?如果是这样,是否有一个标准的成语来解决这个问题?

0 投票
3 回答
2769 浏览

delphi - Delphi7 - 我如何复制正在写入的文件

我有一个应用程序,可以在主 PC 上每秒将信息记录到每日文本文件中。网络上使用相同应用程序的从属 PC 想要将此文本文件复制到其本地驱动器。我可以看到会有文件访问问题。

这些文件每个不应大于 30-40MB。网络将是 100MB 以太网。我可以看到复制过程可能需要超过 1 秒的时间,这意味着记录 PC 需要在读取文件时打开文件进行写入。

文件写入(记录)和文件复制过程的最佳方法是什么?我知道有标准的 Windows CopyFile() 过程,但是这给了我文件访问问题。还有使用 fmShareDenyNone 标志的 TFileStream,但这也偶尔会给我带来访问问题(例如每周 1 次)。

这是完成这项任务的最佳方式是什么?

我当前的文件记录:

我的文件复制过程: