我正在Node.js中编写一个日志阅读器程序,需要检查另一个进程(正在编写日志的进程)是否使用了一个日志文件。该程序在Windows上运行。我已经尝试了以下内容,但似乎日志文件在打开并被写入时未被锁定,因此fs.openSync将始终成功。
function checkOpened(filePath){
var fd=0;
try{
fd=fs.openSync(filePath, 'r+');
}catch(err){//cannot lock the file
console.log(err.code);
if(err.code === "EBUSY"){
return true
}
return false;
}
try{
fs.statSync(fileP)
fs.closeSync(fd);
fs.unlinkSync(filePath);
}catch(err){
//Doesn't really care
}
return false;
}
如何检查Node.js中的其他进程是否打开了文件?
编辑:显然可以使用fs.rename
检查文件是否正在使用(如果文件被其他进程使用,则无法执行此操作)。我现在会满足于此。