Удаление файла с использованием ФАЙЛА *
Возможный дубликат:
Как я могу удалить файл, на который указывает ФАЙЛ * в C?
Я хочу удалить файл в конце программы на C, после чего имя файла уже давно забыто. Было бы хорошо, если бы я мог просто использовать FILE*, чтобы удалить его напрямую или найти имя файла, а затем использовать remove()... вместо того, чтобы запоминать имя файла для этого.
Кто-нибудь знает какие-либо способы, которыми это может быть достигнуто? Я работаю в системе Windows, но мне нужно поддерживать переносимость, поэтому я не могу использовать какие-либо специфические для ОС вещи.
3 ответа
хорошо, если бы я мог просто использовать FILE *, чтобы удалить его напрямую или найти имя файла, а затем использовать remove()... вместо того, чтобы запоминать имя файла для этого
Там нет никакого способа получить имя файла из FILE *
, FILE *
не обязательно настоящий файл; просто подумай о popen(3)
например.
Я не знаю переносимого способа, но есть версия для Linux (которая может работать на других устройствах) и версия для Windows:
Linux: readlink()
на sprintf("/proc/self/fd/%d",fd)
должно сработать
Окна: GetFileInformationByHandleEx()
даст вам имя как часть структуры (поиск в MSDN, у меня нет подробностей в моей голове)
Например
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}