草庐IT

lockfile

全部标签

c# - 锁定文件以防止多个用户访问它的最佳方法是什么

我有一个Windows窗体应用程序,用户可以在其中打开、创建和保存xml文件。文件通常保存到网络文件夹中。我需要确保给定的文件一次只能由一个用户打开。xml文件加载到树控件中,并在session期间频繁保存。(几乎每次单击树节点时)我正在这样打开文件:FileStreamfs=newFileStream(m_Filename,FileMode.Open);XmlReaderreader=newXmlTextReader(fs);XmlSerializerdeserializer=newXmlSerializer(typeof(BaseBoardTest));m_TestNodes=(B

windows - 检测到文件夹中正在复制文件

我正在运行一个脚本,该脚本从一个特定位置复制一个文件夹,如果它不存在(或不一致)。当我同时运行脚本2次以上时,问题就出现了。由于第一个脚本试图复制文件,第二个脚本来了并尝试同样的事情导致一团糟。我怎样才能避免这种情况?类似于系统范围的互斥体。我用-w尝试了一个简单的测试,我手动复制了文件夹,在复制文件夹的同时我运行了脚本:usestrict;usewarnings;my$filename='d:\\folder_to_copy';if(-w$filename){print"icanwritetothefile\n";}else{print"yikes,ican'twritetothef

C++ 锁定文件 Windows 阻塞模式

如何使用C++以阻塞方式在Windows上阻塞文件?我所说的阻塞是指......请求锁定,如果文件被锁定,它将等待直到它被解锁,一旦文件被另一个系统进程解锁,然后执行恢复。P.S.:如果有某种跨平台解决方案,我会更喜欢它。 最佳答案 默认情况下,LockFileEx阻塞直到可以获取锁(尽管您可以使用LOCKFILE_FAIL_IMMEDIATELY告诉它不要这样做)。显然这不是跨平台的。更新这个可怕的代码示例说明了它的工作原理(您可能需要将CreateFile中的文件名从“lockBlock.cpp”更改为)。运行该程序的一个实例,

c++ - LockFileEx 读写升级/降级

我需要打开一个文件,对其进行读取锁定,然后尝试获取写入锁定,但如果失败则保留读取锁定。这在使用fcntl锁定的POSIX中效果很好。在Windows中,我可以使用LockFileEx来获取文件锁。我可以获得读写锁(共享和独占)。但是,在Windows中,我似乎必须先取独占写锁,然后再加上读锁。这与我在POSIX上所做的顺序相反,它会给我的抽象层带来问题。当我在POSIX中按该顺序执行此操作时,我通过获取读锁失去了写锁,因为fcntl替换了现有锁而不是像Windows那样添加锁。我可以用#ifdefs破解它以更改调用站点的锁定顺序,但我正在寻找好的想法来修复我的抽象代码。//Thisis

Git:不为只读操作创建 index.lock

有没有办法强制git不为像gitstatus这样的只读操作创建index.lock?我在tmux中显示我的工作树的状态,每两秒更新一次。基本上我解析了gitstatus--branch--ignored--porcelain和其他一些命令的输出。问题是,对于大型存储库,gitstatus可能需要几秒钟才能完成。在那段时间里,我无法运行任何其他git命令,因为存储库已锁定。编辑:这是我的tmux系列相关部分的一些图片。符号说明从左到右:与远程分支同步|2阶段性变化|1个未暂存的更改|5个被忽略的文件|1个存储条目:与远程分支同步|工作树没有变化|5个被忽略的文件:通过1次提交领先远程分支

Git:不为只读操作创建 index.lock

有没有办法强制git不为像gitstatus这样的只读操作创建index.lock?我在tmux中显示我的工作树的状态,每两秒更新一次。基本上我解析了gitstatus--branch--ignored--porcelain和其他一些命令的输出。问题是,对于大型存储库,gitstatus可能需要几秒钟才能完成。在那段时间里,我无法运行任何其他git命令,因为存储库已锁定。编辑:这是我的tmux系列相关部分的一些图片。符号说明从左到右:与远程分支同步|2阶段性变化|1个未暂存的更改|5个被忽略的文件|1个存储条目:与远程分支同步|工作树没有变化|5个被忽略的文件:通过1次提交领先远程分支

linux - 使用锁定文件避免脚本的两个实例同时运行时如何避免竞争条件?

避免同一脚本的两个实例同时运行的典型方法如下所示:[-f".lock"]&&exit1touch.lock#dosomethingrm.lock是否有更好的方法从shell脚本锁定文件,避免竞争条件?必须改用目录吗? 最佳答案 是的,示例脚本中确实存在竞争条件。您可以使用bash的noclobber选项,以便在竞争的情况下失败,当不同的脚本潜入-f测试和touch.以下是说明该机制的示例代码片段(受thisarticle启发):if(set-onoclobber;echo"$$">"$lockfile")2>/dev/null;th

linux - 使用锁定文件避免脚本的两个实例同时运行时如何避免竞争条件?

避免同一脚本的两个实例同时运行的典型方法如下所示:[-f".lock"]&&exit1touch.lock#dosomethingrm.lock是否有更好的方法从shell脚本锁定文件,避免竞争条件?必须改用目录吗? 最佳答案 是的,示例脚本中确实存在竞争条件。您可以使用bash的noclobber选项,以便在竞争的情况下失败,当不同的脚本潜入-f测试和touch.以下是说明该机制的示例代码片段(受thisarticle启发):if(set-onoclobber;echo"$$">"$lockfile")2>/dev/null;th

node.js - 我是否提交由 npm 5 创建的 package-lock.json 文件?

npm5wasreleasedtoday其中一项新功能包括通过创建package-lock.json文件进行确定性安装。这个文件应该保存在源代码管理中吗?我假设它类似于yarn.lock和composer.lock,两者都应该保存在源代码管理中。 最佳答案 是的,package-lock.json旨在检查到源代码控制中。如果您使用的是npm5+,您可能会在命令行上看到此通知:createdalockfileaspackage-lock.json。你应该提交这个文件。根据npmhelppackage-lock.json:package

node.js - 我是否提交由 npm 5 创建的 package-lock.json 文件?

npm5wasreleasedtoday其中一项新功能包括通过创建package-lock.json文件进行确定性安装。这个文件应该保存在源代码管理中吗?我假设它类似于yarn.lock和composer.lock,两者都应该保存在源代码管理中。 最佳答案 是的,package-lock.json旨在检查到源代码控制中。如果您使用的是npm5+,您可能会在命令行上看到此通知:createdalockfileaspackage-lock.json。你应该提交这个文件。根据npmhelppackage-lock.json:package
12