0

ここから、以下の情報を得ました....

lock [filenum] [r|w] [hex-start] [hex-len]
このコマンドは、CIFS UNIX 拡張機能をサポートするサーバーに依存し、サーバーがサポートしない場合は失敗します。指定された範囲で指定されたタイプの POSIX fcntl ロックを設定しようとします。内部 Samba テスト目的で使用されます。

ただし、このコマンドの例が見つかりません....
私の理解では、[filenum]はファイル名、[r|w]は読み取りおよび/または書き込みロックです。
しかし、[hex-start] と [hex-len] が何なのかわかりません..... 誰か助けてくれませんか?

4

1 に答える 1

1

lockfcntl()を使用したアドバイザリ ファイル ロックの簡単な実装です。(実際、何年も前に、指定されたファイルのロックを保持しながら単一のコマンドまたはスクリプトを実行する、実質的に同一のコマンドライン ユーティリティを作成しました。)

fcntl()サーバーでサポートが有効になっている場合、ロックはリモートファイルシステムに対して機能します。特に、 Linux 上のSambaおよびNFSサーバーには確実に機能があります。NFS では、通常、設定が間違っているか、完全に無効になっているため、ハードリンクまたはロック ディレクトリ ベースのロック スキームがより一般的です。悲しいことに。

技術的には、fcntl()ロックはファイル ロックではなく、レコード ロックです。ファイル内の任意のバイト範囲は、異なるプロセスであっても個別にロックできます。最も一般的な使用法は、ファイル全体をロックすることです (ゼロの開始と長さを指定することにより、ファイルが追加された場合でもロックが適用されます)。パラメータとパラメータlockの両方を省略した場合、コマンドはまさにそれを行います。hex-starthex-length

hex-startto を指定するとlock、ロック領域が開始するオフセットが参照されます。zero を省略または使用するhex-lengthと、ファイルが追加または切り捨てられた場合でも、ロックはファイルの残りの部分に適用されます。も指定するhex-lengthと、ロックはオフセット [ hex-start, hex-start+ hex-length) に適用されます。接頭辞は明らかに16 進数hex-で指定されている値を指します。

ロックは、ファイルへのいかなる種類のアクセスも妨げないため、助言的です。fcntl()ファイルのアドバイザリ ロックを取得するには、すべてのアプリケーションで を呼び出す必要があります。目的のロックが同じファイルの他のロックと競合する場合、呼び出しはブロック ( F_SETLKW) または失敗 ( F_SETLK) します。

質問?

于 2013-10-03T06:41:44.030 に答える