Ich versuche, eine Datei mit exklusiver Sperre über JavaScript zu öffnen. Die zu öffnende Bibliothek ist also kein Problem, nur die Anzahl der als UnixFlags zu übergebenden Zahlen ist ein Problem.
Dies ist die Syntax:
OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});
Kennt jemand die Nummer, die in NUMBER_HERE eingegeben werden muss und die für eine exklusive Sperre ungültig ist?
Danke
Antwort1
Ich denke, es ist vielleicht OS.Constants.libc.O_EXLOCK
. Von derMDN:
O_EXLOCK Atomically obtain an exclusive lock.
Es gibt auch eineBeispielcodewas darauf schließen lässt, dass dies der Wert ist:
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);
Ich bin gerade durchgegangenopen
, der Systemaufruf, der meiner Meinung nach tatsächlich die Öffnung durchführt. Es ist O_EXLOCK
hier keins aufgeführt, daher gehe ich davon aus, dass die Konstante aus diesem Grund nicht verfügbar ist. DieFreeBSD-Variantevon open
und openat
listet es auf, aber ich weiß nicht, was ich damit machen soll. Lautdiese SO-Antwort O_EXLOCK
ist unter Linux möglicherweise nicht verfügbar.