我正在嘗試透過 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 中可能無法使用。