Я хочу реализовать функцию, которая получает в качестве параметра FILE*
, которая уже открыта в режиме записи (a
, a+
, w
, w+
и т. Д.), И читает содержимое этогофайл.Проблема здесь в том, что файл уже заблокирован (из-за fopen
), и мне нужно закрыть его перед началом чтения.Однако после того, как я прочитал файл, мне нужно снова открыть его, как это было до вызова моей функции.
Таким образом, мне нужны и имя файла , и режим Сначала был вызван fopen
.
Мне удалось получить имя файла .Однако режим кажется хитрым.С тех пор я смог получить код режима , используя приведенный ниже код.
int fd = fileno(file_pointer);
int mode = fcntl(fd, F_GETFL);
К сожалению, существует несогласованность между системами (один и тот же режим открытия -> коды разных режимов).Является ли метод, показанный выше, реальным способом получения режима, в котором был открыт файл?У вас есть другие идеи?