获取独占锁常量?在 ctypes 中它是 O_EXLOCK

获取独占锁常量?在 ctypes 中它是 O_EXLOCK

我正在尝试通过 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。

相关内容