Удаление файла с использованием ФАЙЛА *

Возможный дубликат:
Как я могу удалить файл, на который указывает ФАЙЛ * в 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;
}
Другие вопросы по тегам