Получить константу эксклюзивной блокировки? В 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Здесь нет перечисленных, поэтому я предполагаю, что константа недоступна по этой причине.Вариант FreeBSDopenи перечисляет его openat, но я не знаю, что с ним делать. Согласноэтот ТАК ответ O_EXLOCKможет быть недоступен в Linux.

Связанный контент