节点js检查另一个进程是否正在使用该文件

时间:2014-05-23 00:51:42

标签: javascript node.js file filesystems node-webkit

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

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

感谢。

1 个答案:

答案 0 :(得分: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');