我正在开发一个执行文件系统操作的node-webkit应用程序。在删除(取消链接)之前,我需要能够检查文件是否被其他进程使用。
如果我只使用fs.unlink方法,系统将等待文件停止使用,然后再将其完全删除。我想要的是,如果文件正在使用,请不要等到它被释放,但取消整个操作并且不要删除它。
感谢。
答案 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');