Получить константу монопольной блокировки? В ctypes это O_EXLOCK [closed]

Я пытаюсь открыть файл с эксклюзивной блокировкой через Javscript. Так что открывать библиотеку не сложно, просто число, которое нужно передать в качестве unixFlags, является проблемой.

Это синтаксис:

OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});

Кто-нибудь знает номер, который нужно ввести в NUMBER_HERE, который является Falg для монопольной блокировки?

Спасибо

2
задан 13 September 2014 в 03:59

1 ответ

Я думаю это, возможно, OS.Constants.libc.O_EXLOCK. От MDN:

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.

2
ответ дан 7 October 2019 в 02:44

Другие вопросы по тегам:

Похожие вопросы: