Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何故意使文件成为“文件”;EBUSY:资源忙或已锁定“;_File_Locking - Fatal编程技术网

File 如何故意使文件成为“文件”;EBUSY:资源忙或已锁定“;

File 如何故意使文件成为“文件”;EBUSY:资源忙或已锁定“;,file,locking,File,Locking,在我所有的搜索尝试中,我只能找到试图修复“EBUSY:resource busy或locked”错误的人 我想要的是故意将文件置于这种状态(暂时)。如何做到这一点 我尝试使用NodeJS中的fs.open、fs.createReadStream和fs.createWriteStream,但出乎意料的是,这并没有使文件繁忙 我该怎么做?最好是在NodeJS中,但它可以是任何语言。在.NET Core上,您可以使用FileStream.Lock() 下面是一个示例.NET程序,该程序也会以独占方式锁

在我所有的搜索尝试中,我只能找到试图修复“EBUSY:resource busy或locked”错误的人

我想要的是故意将文件置于这种状态(暂时)。如何做到这一点

我尝试使用NodeJS中的
fs.open
fs.createReadStream
fs.createWriteStream
,但出乎意料的是,这并没有使文件繁忙


我该怎么做?最好是在NodeJS中,但它可以是任何语言。

在.NET Core上,您可以使用
FileStream.Lock()

下面是一个示例.NET程序,该程序也会以独占方式锁定文件,这将在试图访问同一文件的node JS程序中触发
'EBUSY:resource busy or locked'
错误

FileStream.Lock()
API调用签名是:

public virtual void Lock (long position, long length);

您可以在位置设置为0,长度设置为文件长度的情况下调用它FileStream.Lock()允许锁定文件范围。

很酷,这是跨平台的吗?NET Core 3.1是跨平台的(Win/Linux/MacOS,可以在Docker上运行)。关于FileStream.Lock()在不同平台上的行为是否相同,这是一个悬而未决的问题。我对Linux/MacOS中较低级别的文件API了解不够,无法评论它的行为是否相同。例如:有一些POSIXAPI调用,比如lock()可以在所有平台上工作。我不确定.NET是否在非Windows平台上使用这些。但是,可以在这些平台上编译.NET源代码,您可以自己尝试,并用您发现的内容更新本文。谢谢。另一个问题(我以前从未使用过dotnet):您链接到了v3.1的文档,它是否也适用于最新版本?NET Core是跨平台的.NET,3.1是可用的.NET Core的最新版本。就在这里。