Я пытаюсь открыть файл с исключительной блокировкой через 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.