【问题标题】:Node js check if file is being used by another processNode js检查文件是否被另一个进程使用
【发布时间】:2014-07-12 05:37:15
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 如果使用同步操作删除文件会发生什么。您是否收到错误或它会阻止您的脚本?
  • 我陷入了类似的情况,因此我可以说除非文件被释放,否则文件不会被删除。在这里释放也意味着停止服务器,这是不理想的事情。

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


【解决方案1】:

假设您在 *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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2013-01-09
    • 2012-03-09
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多