1

ファイルを開く前に別のプロセスで使用されているかどうかを確認する標準の C/C++ 関数はありますか?

4

3 に答える 3

0

でファイルを開こうとすると

fopen();

エラーが返された場合は、次のことが可能です。

  • ファイルが存在しません

また

  • ファイルは別のプロセスによって使用されています。
于 2013-07-23T08:32:36.613 に答える
0

これを少しひっくり返して、ファイルへのアクセス権を 1 つのプロセスだけに与える方法や、多数のプロセスがファイルへの書き込みアクセス権を問題なく共有する方法について説明します。次に、これらを見ることをお勧めします。

LINUX ファイルのロック

複数の OS ファイルのロックの概要

于 2013-07-23T09:32:17.590 に答える
-1

ファイルが 1 つのプロセスのみによって排他的に開かれるようにする 1 つの方法は、通常は .LCK 拡張子を持つロック ファイルを作成することです。

たとえば、ファイル名が foo の場合、foo.LCK の作成を試みます。成功した場合は、プロセスの pid を foo.LCK ファイルに書き込みます。これにより、ロックが不要になったときにプロセスが何らかの理由で LCK ファイルを削除しない場合に、後で LCK ファイルを削除できます。

.LCK ファイルが作成されると、それを作成しようとする他のすべての試みは失敗します。

もう 1 つの方法は、flock() を使用することです。

どちらの場合も、ロックは推奨事項であり、必須ではありません。つまり、非協力的なプロセスは、それが望むことを自由に行うことができます。

于 2013-07-23T01:53:44.950 に答える