Exklusive Sperrkonstante erhalten? In ctypes ist es O_EXLOCK

Exklusive Sperrkonstante erhalten? In ctypes ist es O_EXLOCK

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_EXLOCKhier keins aufgeführt, daher gehe ich davon aus, dass die Konstante aus diesem Grund nicht verfügbar ist. DieFreeBSD-Variantevon openund openatlistet es auf, aber ich weiß nicht, was ich damit machen soll. Lautdiese SO-Antwort O_EXLOCKist unter Linux möglicherweise nicht verfügbar.

verwandte Informationen