Могу ли я проверить, относятся ли два номера FILE * или дескриптора файла к одному и тому же файлу?
У меня есть программа, которая читает из файла и пишет в файл. Я'Я хотел бы запретить пользователю указывать один и тот же файл для обоих (по понятным причинам). Допустим, первый путь вchar* path1
и второй путь вchar* path2
, могу яfopen()
оба пути, вызовfileno()
на каждом и получить одинаковый номер?
Чтобы объяснить более четко:
char* path1 = "/asdf"
char* path2 = "/asdf"
FILE* f1 = fopen(path1, "r");
FILE* f2 = fopen(path2, "w");
int fd1 = fileno(f1);
int fd2 = fileno(f2);
if(fd1 == fd2) {
printf("These are the same file, you really shouldn't do this\n");
}
РЕДАКТИРОВАТЬ:Я не хочу сравнивать имена файлов, потому что можно легко победить это такими путями, как/asdf/./asdf
или с помощью символических ссылок. В конечном счете, я не хочу записывать свой вывод в файл, который ям чтение из (может вызвать серьезные проблемы).