Estou tentando abrir um arquivo com bloqueio exclusivo via Javscript. Portanto, a biblioteca para abrir não é problema, apenas o número a ser passado como unixFlags é um problema.
Esta é a sintaxe:
OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});
Alguém sabe o número para colocar em NUMBER_HERE que é falg para bloqueio exclusivo?
Obrigado
Responder1
Eu acho que talvez OS.Constants.libc.O_EXLOCK
. DeMDN:
O_EXLOCK Atomically obtain an exclusive lock.
Há também umcódigo de exemploo que sugere que este é o valor:
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);
acabei de passaropen
, a chamada do sistema que acho que realmente faz a abertura. Não há nenhum O_EXLOCK
listado aqui, então presumo que a constante não esteja disponível por esse motivo. OVariante do FreeBSDe lista open
- openat
o, mas não sei o que fazer com ele. De acordo comesta resposta SO O_EXLOCK
pode não estar disponível no Linux.