問題タブ [file-locking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
494 参照

c++ - _locking() は実際に何をしますか?

この質問の答えを探していると、 function _locking()が見つかりました。と書かれていますLocks or unlocks bytes of a file(実際、この文の意味がよくわかりません)。この機能を使用した経験のある方がいらっしゃいましたら、最初の質問に記載されている問題を解決するためにこの機能を使用することは可能でしょうか?

0 投票する
1 に答える
271 参照

vb.net - Assembly.LoadFromブロッキングを回避する方法は?

codedomを使用してオンザフライで.netdllを作成し、次のようにAssembly.LoadFromを使用してロードします。

それは一度だけ機能します。test.dllを再コンパイルしようとすると、ファイルが使用されており、書き込み可能ではないというエラーが表示されます。ASMを何も設定しようとしませんでした-ロードされたアセンブリをメモリからアンロードするにはどうすればよいですか?

0 投票する
4 に答える
17130 参照

c# - Windows でファイルを実行する際に File.Open for read アクセスが拒否されました

Windows でファイルを実行する際のファイル パーミッションに問題があり、フォーラムのヒント [1] に従って解決したようですが、その理由がわかりません。多分あなたたちは助けることができます。

ファイルを実行して(コンソール出力を読み取って)ファイルのバナーをチェックしてから、後で FileStream を使用して読み取るために同じファイルを開きます。

たまに「ファイルは別のプロセスで使用されています」というメッセージが表示されます。ウィキペディアから、Windows が書き込みアクセスを拒否するファイルの実行にロックを設定することはわかっていますが [2]、私は読んでいるだけです。また、プロセスを開こうとすると、プロセスはすでに停止しているはずです。

フォーラムの投稿から、FileShare.ReadWrite を追加すると役立つように思われます。

しかし、理由がわかりません。ここに表示されない競合状態はありますか?

また、File.Open 呼び出しは、デフォルト (FileShare.Read だと思います) ではなく、FileShare.ReadWrite を使用するとはるかに高速になるようです。

[1] http://www.xtremevbtalk.com/archive/index.php/t-192118.html

[2] http://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows

0 投票する
1 に答える
366 参照

linux - アドバイザリロックを使用したLinuxでのファイルバックアップ

Linuxでのファイルロックがほとんど推奨されている場合、バックアッププログラムはどのようにしてファイルの一貫したコピーを確実に取得するのでしょうか。

たとえば、他のプロセスがファイルロックを尊重せず、ファイルへの書き込みを行わない場合、そのファイルの一貫したコピーを作成するにはどうすればよいですか?

0 投票する
2 に答える
329 参照

c - 正常にロック解除されなかったファイル ロックを POSIX システムがクリアする順序は何ですか?

状態のPOSIX 仕様fcntl():

特定のプロセスのファイルに関連付けられているすべてのロックは、そのファイルのファイル記述子がそのプロセスによって閉じられたとき、またはそのファイル記述子を保持しているプロセスが終了したときに削除されます。

終了したプロセスによって保持されていたファイル セグメント ロックのロックを解除するこの操作は、ファイルごとにアトミックですか? つまり、プロセスがファイルのバイト セグメント B1..B2 および B3..B4 をロックしていたが、終了する前にセグメントのロックを解除しなかった場合、システムがそれらをロック解除しようとすると、セグメント B1..B2 および B3 になります。 .B4fcntl()ファイルのセグメントをロックする別の操作が成功する前に両方のロックが解除されますか? ファイルごとにアトミックでない場合、これらのファイル セグメントがシステムによってロック解除される順序は、ファイル セグメントが最初に取得された順序に依存しますか?

の仕様には明記されfcntl()ていませんが、おそらく POSIX 仕様には、プロセスがクリーンに終了しないかクラッシュした後にクリーンアップするための決定論的な順序を義務付ける一般規定が存在します。

0 投票する
2 に答える
918 参照

c++ - LockFileEx() 呼び出し時のアクセス違反

Win32 API 関数LockFileEx()を使用して、プロセスで排他的に使用するためにファイルをロックすることもできる FileMapping クラスがあります。

電話に出るたびにLockFileEx()、アクセス違反が発生します。

tftpServer.exe の 0x7466c2ec で未処理の例外: 0xC0000005:
アクセス違反の読み取り場所 0x00000008。

ファイル ハンドルm_fileDescは間違いなく有効なハンドルであり (そのハンドルを使用してファイルをメモリにマップすると機能します) 、マップされたファイル部分の長さをバイト単位で格納するm_mappingLengthだけです。size_t

これを修正する方法を知っている人はいますか?

0 投票する
0 に答える
2012 参照

mongodb - MongoDB が NFS 共有でデータ ファイルの割り当てに失敗する

背景:
Vagrant (http://vagrantup.com/) を使用して、開発用の仮想マシンを作成しています。Buildout という Python ビルド システムを使用して、プロジェクトの管理とビルドを行っています。MongoDB をインストールして構成する Buildout レシピを使用します。MongoDB データをプロジェクト内のディレクトリに配置します。仮想マシンを使用していない場合、これはすべて正常に機能します。Vagrant は、ソース コード リポジトリがホスト マシン上に存在し、NFS を介して仮想マシンによってアクセスされるようにセットアップされます。

やりたいこと:
mongod を vagrant ユーザーとして (ゲスト OS で) 実行し、NFS 共有にデータ ディレクトリを置きたい。このようにサーバーを起動しようとすると、エラーが発生します。

mongod はデータ ファイルを作成できません。エラー メッセージは「警告: posix_fadvise は /nfs_share/mongodb/data/local/local.ns errno:1 操作が許可されていません」に失敗します。これは、最初はファイルのパーミッションが間違っていることを示唆しています。データディレクトリがグループ書き込み可能であり、vagrant が NFS 共有のグループ所有者であるグループ「dialout」に属しているため、そうではないと思います。私の 2 番目の推測は、NFS が原因であるということでした。NFS ではないファイル システムでこのコマンドを実行すると、すべて問題ありません。何が悪いのかわかりません。MongoDB メーリング リストを検索したところ、データ ディレクトリが動作しない場合、NFS は MongoDB で動作しないというメッセージ ( http://groups.google.com/group/mongodb-user/browse_thread/thread/4129325d3a9a3237 ) が見つかりました。排他ロックをサポートします。

考えられる解決策:
NFS 以外の場所にあるデータ ディレクトリを指すシンボリック リンクをリポジトリに配置します。

  • これが私が現在行っていることです。Buildout レシピでは機能せず、手動で行う必要があるため、あまり良くありません。
  • Buildout が仮想マシンで実行されているかどうかを判断する簡単な方法はありません。ファイル システムが NFS であるかどうかを検出し、それに応じて動作するようにスクリプト化できるのでしょうか?
  • プロジェクトのコンポーネントが別の場所にあるのは少し面倒です。それどころか、Postgres データは別の場所にあるので、MongoDB データも別の場所に置いてみませんか?

質問:

  • 表示されているエラーは実際に NFS に関連していますか? それとも別の原因が考えられますか?
  • 排他ロックは NFS の機能ですか? 有効/無効にできますか?
  • MongoDB メーリング リストで、人々が NFS 上で MongoDB を実行しているというレポートを読みました。これを行うために必要な特別な考慮事項はありますか?
0 投票する
1 に答える
152 参照

database - 番号のリストを含むファイルから一意の番号を同時にフェッチする

ファイルに一意の番号のリストがあります。私のサイトのユーザーがリクエストを行うたびに、他のユーザーが同じ値を取得しないように、そのリストから値を取得する必要があります。多くの同時リクエストが存在する可能性があるため、主要な問題は、2 人のユーザーが同じ値を取得しないことを保証することです。ユーザーが要求を行った後に応答を期待しないため、すべてがバックグラウンドで発生する可能性があるという意味で、私はパフォーマンスにそれほど関心はありません。私が読んだことから、これはファイルロックを使用して実装することも、データをデータベースに保存してデータベースロックを使用することもできます。このことを行うための最良の方法は何かというアイデアを得たいだけです。データベースとして postresql を使用していますが、現在の行番号をシーケンスに格納するシーケンスを使用してこれを実行できるかどうか疑問に思っていました。これにより、プログラムはデータベースから読み取る行を認識できます。

0 投票する
0 に答える
155 参照

php - 誰かがファイルに書き込んでいる間、読み書きをスキップしますか?

誰かがファイルに書き込んでいるかどうかを知るにはどうすればよいですか? ここでファイルロックを使用できますが、いくつかの問題が見つかりました! このように: https://bugs.php.net/bug.php?id=54453

他のアイデアはありますか?

ファイルのロックが解除されるのを待たずにファイルへの書き込み/読み取りをスキップしたいLOCK_EXまたはの場合のように、LOCK_SHファイルがロック解除されるまでコードがハングします!

0 投票する
3 に答える
1378 参照

java - アプリケーションが予期せず終了した場合のファイルロックの処理

私は、Javaアプリケーションで使用されるいくつかのファイルをロックするための最良の(クロスプラットフォームの)方法を調査しています。

最悪のシナリオは、プログラムが予期せず終了することです(ユーザーが強制終了するか、クリーンな終了をしません)。この場合、ファイルロックが解放され、プログラムによるその後のアクセスに影響を与えないようにするための最良の方法は何ですか?

FileLockの使用を検討しましたが、終了がクリーンでない場合、ファイルがロックされた使用不可の状態になる可能性があります。

コードでこの問題を解決する方法はありますか?このような問題を最初の「クリーンアップ」でキャッチするか、それともプログラムの後続の実行でキャッチしますか?