ファイルを閉じて削除するにはどうすればよいですか?
次のコードがあります。
FILE *filePtr = fopen("fileName", "w");
...
ここで、filePtr を閉じて、ファイル「fileName」を削除します。
するべきか:
fclose(filePtr);
remove("fileName");
または:
remove("fileName");
fclose(filePtr);
どちらを先に行うかは重要ですか?
ありがとう!!
それはOS依存です。*nix では、開いているファイルを削除すると、ファイルは開いたままになり、データはディスク上に残りますが、ファイル システムからファイル名が削除され、閉じるときにファイルが実際に削除されます。他の一部のオペレーティング システムでは、開いているファイルをまったく削除できない場合があります。したがって、移植性を最大限に高めるには、前者をお勧めします。
man unlink(2) が言うように (Unix システムの場合):
unlink() 関数は、path によって指定されたリンクをそのディレクトリから削除し、リンクによって参照されたファイルのリンク数を減らします。その減少によってファイルのリンク数がゼロになり、そのファイルを開いているプロセスがない場合、そのファイルに関連付けられているすべてのリソースが再利用されます。最後のリンクが削除されたときに 1 つ以上のプロセスがファイルを開いている場合、リンクは削除されますが、ファイルへのすべての参照が閉じられるまで、ファイルの削除は延期されます。
したがって、順序はまったく関係ありません。
fclose
してからunlinkする方が理にかなっています。
fopen
ファイルを追加する必要はありませんremove
。しかし、Linux ではremove
、fopen
ed ファイルを閉じた後にのみ削除されます。あなたはまだそれに読み書きすることができます。