私のアプリケーションではかなり異常な動作が観察されます。存在が確認された直後に、「そのようなファイルまたはディレクトリがありません」と表示されてunlink()が失敗します
私は、以下の機能をしている:
bool File::Exists(const std::string & Path)
{
struct stat S;
if(stat(Path.c_str(), &S) != 0)
return false;
if(!S_ISREG(S.st_mode))
return false;
return true;
}
void File::Remove(const std::string & Path)
{
if(unlink(Path.c_str()) != 0)
throw Exceptions::Exception(EXCEPTION_PARAMS, errno);
}
私が使用するコードは次のとおりです。
...
const std::string Path = ...;
if(File::Exists(Path))
File::Remove(Path);
...
そして、この時点で例外がスローされます。
No such file or directory (2)
主な事実:
を- は一度1K-10Kが削除さ
- すべてのファイルを約20メガバイト
- がこれは、アプリケーションのスレッドで呼び出され、バイナリファイルである呼び出しますが、これは(他のスレッド/プロセスがアクセスしない)、それらのファイルにアクセスする唯一のスレッドであるハプンズ。他のプロセス/ユーザー・アクセス・パーティションもありません。
- ファイルマウントCIFS(SMB)の上に配置されて削除される(ネットワーク)は、マウントポイント
なぜSTAT()レポートファイルは、()、時には失敗存在するが、リンク解除しますか?
1分ごとに呼び出されるクリーンアップ()ラウンドでは、10個のファイルが削除されます。コンピュータとストレージは1Gbps LANネットワークに接続されています。このプログラムは、ストレージデバイスの唯一のユーザーです。 「No such file ...」と表示された場合、ファイルは実際に削除されているのですか? – peku33
"ファイルは実際に削除されていますか?"通常、はい。しかし、ファイルがあなたから隠されていれば、あなたが懸念している限り、そこには存在しません。それはすべてあなたの許可に依存します。 –