Как получить режим открытия файла в C (LINUX) - PullRequest
0 голосов
/ 16 марта 2019

Я хочу реализовать функцию, которая получает в качестве параметра FILE*, которая уже открыта в режиме записи (a, a+, w, w+ и т. Д.), И читает содержимое этогофайл.Проблема здесь в том, что файл уже заблокирован (из-за fopen), и мне нужно закрыть его перед началом чтения.Однако после того, как я прочитал файл, мне нужно снова открыть его, как это было до вызова моей функции.

Таким образом, мне нужны и имя файла , и режим Сначала был вызван fopen.

Мне удалось получить имя файла .Однако режим кажется хитрым.С тех пор я смог получить код режима , используя приведенный ниже код.

int fd = fileno(file_pointer);
int mode = fcntl(fd, F_GETFL);

К сожалению, существует несогласованность между системами (один и тот же режим открытия -> коды разных режимов).Является ли метод, показанный выше, реальным способом получения режима, в котором был открыт файл?У вас есть другие идеи?

...