无法从打开的文件中读取

时间:2015-02-09 14:38:56

标签: c linux file io posix

该文件存在,我刚从另一个函数中读取它。另一个函数关闭文件。现在,我的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

我怀疑我打开文件的方式不正确。我想打开文件进行写作和阅读。该文件已存在。我错过了什么?

1 个答案:

答案 0 :(得分:3)

更改此标志

O_WRONLY | O_RDONLY

O_RDWR

检查here,它说标志必须包含一个的访问模式。

此外,参考文献提到:

  

参数标志必须包含以下访问模式之一:          O_RDONLY,O_WRONLY或O_RDWR。这些请求打开文件读取 -          只有,只写或读/写。