Я пытаюсь открыть файл с эксклюзивной блокировкой через Javscript. Так что открывать библиотеку не сложно, просто число, которое нужно передать в качестве unixFlags, является проблемой.
Это синтаксис:
OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});
Кто-нибудь знает номер, который нужно ввести в NUMBER_HERE, который является Falg для монопольной блокировки?
Спасибо
Я думаю это, возможно, 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.