Файл существует, и я только что прочитал его в другой функции. Другая функция закрывает файл. Теперь мой workwith()
пытается открыть его и прочитать из него.Не удается прочитать из открытого файла
Мой код:
if (access(path_file, F_OK) != -1) {
// file exists
*mfs_desc = open(path_file, O_WRONLY | O_RDONLY, 0600);
if (*mfs_desc == -1) {
perror("opening file");
exit(1);
}
printf("file_descriptor = %d, filename = |%s|\n", *mfs_desc,
path_file);
if ((read(*mfs_desc, superblock, sizeof(Superblock))) == - 1) {
perror("read superblock");
exit(1);
}
}
Однако я получаю этот выход:
file_descriptor = 3, filename = |t.mfs|
read superblock: Bad file descriptor
Я подозреваю, что так я открываю файл не является правильным. Я хочу открыть файл для написания и чтения. Файл уже существует. Что мне не хватает?
Они не '' 'прекрасно, потому что изначально« режим »был просто логическим, указывающим, нужен ли вам доступ на запись или нет. Режим чтения-записи не существует. Когда оно было добавлено, числовое значение readonly поддерживалось равным 0 для совместимости. [V3 man page] (http://minnie.tuhs.org/cgi-bin/utree.pl?file=V3/man/man2/open.2) [Страница руководства V4] (http: //minnie.tuhs. org/cgi-bin/utree.pl? file = V4/man/man2/open.2) ... Я думаю, что Кен и Деннис были достаточно умны, чтобы знать, что 'O_RDWR! = O_RDONLY | O_WRONLY' был глупым и исправил бы если бы они могли. –