Obter constante de bloqueio exclusiva? Em ctypes é O_EXLOCK

Obter constante de bloqueio exclusiva? Em ctypes é O_EXLOCK

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_EXLOCKlistado aqui, então presumo que a constante não esteja disponível por esse motivo. OVariante do FreeBSDe lista open- openato, mas não sei o que fazer com ele. De acordo comesta resposta SO O_EXLOCKpode não estar disponível no Linux.

informação relacionada