Firefox addon 使用OS.File测试路径是否已锁定?
使用Firefox addon 使用OS.File测试路径是否已锁定?,firefox-addon,Firefox Addon,使用OS.File我可以打开一个带锁的文件: let options = { winShare: 0 // Exclusive lock on Windows }; if (OS.Constants.libc.O_EXLOCK) { // Exclusive lock on *nix options.unixFlags = OS.Constants.libc.O_EXLOCK; } let file = yield OS.File.open(..., options); 是否可以测
OS.File
我可以打开一个带锁的文件:
let options = {
winShare: 0 // Exclusive lock on Windows
};
if (OS.Constants.libc.O_EXLOCK) {
// Exclusive lock on *nix
options.unixFlags = OS.Constants.libc.O_EXLOCK;
}
let file = yield OS.File.open(..., options);
是否可以测试路径是否已锁定。我正在寻找nsiToolkitProfile.lockProfile
这是复制粘贴到草稿行代码。顶部块使用nsitoolkitprofile
测试是否锁定。而且效果很好。第二部分使用OS.File.open
,它总是抛出错误
Cu.import('resource://gre/modules/osfile.jsm');
Cu.import('resource://gre/modules/FileUtils.jsm');
var tps = Cc['@mozilla.org/toolkit/profile-service;1'].createInstance(Ci.nsIToolkitProfileService); //toolkitProfileService
var folderOfProfile = 'k46wtieb.clean'; //folder names of relative profiles found here: %APPDATA%\Mozilla\Firefox\Profiles
var rootPathDefault = FileUtils.getFile('DefProfRt', []).path;
var localPathDefault = FileUtils.getFile('DefProfLRt', []).path;
var aDirect = new FileUtils.File(OS.Path.join(rootPathDefault, folderOfProfile));
var aTemp = new FileUtils.File(OS.Path.join(localPathDefault, folderOfProfile));
try {
var locker = tps.lockProfilePath(aDirect, aTemp)
Services.ww.activeWindow.alert('NOT open');
locker.unlock();
} catch (ex) {
if (ex.result == Cr.NS_ERROR_FILE_ACCESS_DENIED) {
Services.ww.activeWindow.alert('its in use');
} else {
throw ex;
}
}
var promise = OS.File.open(aDirect.path)
promise.then(
function(aVal) {
Services.ww.activeWindow.alert('promise success, aVal = ' + aVal);
aVal.close();
},
function(aReason) {
Services.ww.activeWindow.alert('promise rejected, aReason = ' + uneval(aReason));
}
)
承诺总是在
区域内被拒绝。因为每次访问被拒绝时:(只要试着打开它……如果你因为权限原因无法打开,那么文件可能被锁定在另一个位置。每当我打开一个文件夹时,尽管它总是被拒绝,但请查看我的试用更新问题哦,我忘了提到:承诺总是被拒绝,带有区域。因为每次访问都被拒绝,无论它是否被拒绝s open or nothine@nmaier你能对我的更新发表评论吗:(更新:这只适用于windows。对于Mac OS和Linux,我必须使用fcntl
。对于Firefox配置文件锁,如果fcntl
失败,我必须使用readlink
读取它们的符号链接锁协议。改编自: