Node js 检查文件是否正在被另一个进程使用

jav*_*sas 5 javascript filesystems file node.js node-webkit

我正在开发一个执行文件系统操作的 node-webkit 应用程序。我需要能够在删除(取消链接)之前检查该文件是否正在被另一个进程使用。

如果我只使用 fs.unlink 方法,系统将等到文件停止使用后再将其完全删除。我想要的是,如果文件正在被使用,不要等到它被释放,而是取消整个操作,不要删除它。

谢谢。

Jac*_*ack 3

假设您使用的是 *nix 系统,类似这样的事情应该可以工作。显然,就错误和路径检查而言,这过于简化了。很可能有更好的方法来做到这一点,但我不妨以此开始讨论:

var fs = require('fs'),
    exec = require('child_process').exec;

function unlinkIfUnused(path) {
    exec('lsof ' + path, function(err, stdout, stderr) {
        if (stdout.length === 0) {
            console.log(path, " not in use. unlinking...");
            // fs.unlink...
        } else {
            console.log(path, "IN USE. Ignoring...");
        }
    });
}

unlinkIfUnused('/home/jack/testlock.txt');
Run Code Online (Sandbox Code Playgroud)