私は、特定のフォルダの最大サイズを制限するOS XのC/C++で実装されているクォータマネージャを使っています。私のプロジェクトには、フォルダに新しいデータを書き込んだり、フォルダからサーバにデータを移動したりする一般的なスレッドワーカーがいます。閉じる後にファイルが削除されるのを待つ
このようにして、削除タスクによって、別のスレッドがディスクに書き込んでいる途中のファイルが削除されることがあります。
書き込みプロセス中にファイルが何らかの形で削除されるのを防ぐことができますか。私は自分の(フラグ、ロックなどを使って)自分のメカニズムを実装することができますが、私はそれがファイルシステムのプロパティでなければならないと信じています。
ファイルの削除に失敗したが、実際には成功したかどうかを確認するために、次のコードを試してみました。
#include <stdio.h>
int main() {
FILE *fp;
fp=fopen("./x", "w");
fprintf(fp, "Testing...\n");
if(remove("./x") != 0)
perror("Error deleting file");
else
puts("File successfully deleted");
return 0;
}
削除する前にファイルを閉じることはできますか?
あなたは[this](http://stackoverflow.com/questions/230062/whats-the-best-way-to-check-if-a-file-exists-in-c-cross-platform)に興味があるかもしれません。 。 – sjsam
おそらくあなたは[このSO post](http://stackoverflow.com/questions/5769785/removing-a-file-in-c)と[man page](http://linux.die .net/man/3/remove)。 – user3078414