排他ロック定数を取得しますか? ctypes では O_EXLOCK です

排他ロック定数を取得しますか? ctypes では O_EXLOCK です

私は、Javscript 経由で排他ロック付きのファイルを開こうとしています。開くライブラリは簡単ですが、unixFlags として渡す番号が問題です。

構文は次のとおりです。

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

排他ロックのフラグである NUMBER_HERE に入力する番号を知っている人はいますか?

ありがとう

答え1

多分そうだと思いますOS.Constants.libc.O_EXLOCK翻訳:

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 バリアントのとリストがありますopenopenat、どうすればいいのかわかりません。このSOの答え O_EXLOCKLinuxでは利用できない可能性があります。

関連情報