取得獨佔鎖常量?在 ctypes 中它是 O_EXLOCK

取得獨佔鎖常量?在 ctypes 中它是 O_EXLOCK

我正在嘗試透過 Javscript 開啟帶有獨佔鎖的檔案。因此,打開庫並不困難,只是傳遞的數字是一個問題,因為 unixFlags 是一個問題。

這是語法:

OS.File.open('/path/to/file', {unixFlags: NUMBER_HERE});

有人知道要在 NUMBER_HERE 中輸入的數字(falg 表示獨佔鎖)嗎?

謝謝

答案1

我想也許吧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 中可能無法使用。

相關內容