удаление файла в c - PullRequest
       54

удаление файла в c

3 голосов
/ 24 апреля 2011

Как закрыть файл и удалить его?

У меня есть следующий код:

FILE *filePtr = fopen("fileName", "w");
...

Теперь я хочу закрыть filePtr и удалить файл "fileName".

Должен ли я:

fclose(filePtr);
remove("fileName");

Или:

remove("fileName");
fclose(filePtr);

Имеет ли значение, что я делаю первым?

Спасибо !!

Ответы [ 4 ]

3 голосов
/ 24 апреля 2011

Это зависит от ОС.В * nix удаление открытого файла оставляет его открытым и данные на диске, но удаляет имя файла из файловой системы и фактически удаляет файл при закрытии;некоторые другие операционные системы могут вообще не позволить вам удалить открытый файл.Поэтому первое рекомендуется для максимальной мобильности.

0 голосов
/ 24 апреля 2011

Как говорит man unlink (2) (для систем Unix):

Функция unlink () удаляет ссылку с именем path из своего каталога и уменьшает количество ссылок файла, на который ссылаетсяпо ссылке.Если это уменьшение уменьшает количество ссылок файла до нуля, и ни у одного процесса нет открытого файла, то все ресурсы, связанные с файлом, освобождаются.Если один или несколько процессов открывают файл при удалении последней ссылки, ссылка удаляется, но удаление файла задерживается до тех пор, пока все ссылки на него не будут закрыты.

Таким образом, порядоквообще не имеет значения.

0 голосов
/ 24 апреля 2011

Вам не нужно fopen файл, чтобы remove его.Но в Linux, если вы remove и fopen ed файл, он будет удален только после его закрытия.Вы все еще можете читать / писать в него.

0 голосов
/ 24 апреля 2011

Имеет смысл fclose, а затем отсоединить .

...