我正在尝试通过 Javscript 打开一个带独占锁的文件。因此打开的库不难,只是传递 unixFlags 的数字是个问题。
这是语法:
OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});
有人知道在 NUMBER_HERE 中输入的独占锁的 falg 的数字吗?
谢谢
答案1
我认为可能是这样OS.Constants.libc.O_EXLOCK
。从分子动力学:
O_EXLOCK Atomically obtain an exclusive lock.
还有一个示例代码这表明这是值:
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);
我刚刚经历了open
,我认为实际上是执行打开操作的系统调用。这里没有O_EXLOCK
列出,因此我推测该常量不可用。FreeBSD 变体并open
列出openat
了它,但我不知道该怎么处理它。根据这个答案 O_EXLOCK
可能不适用于 Linux。