该文件存在,我刚刚在另一个函数中读取了该文件。另一个函数关闭文件。现在,我的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我怀疑我打开文件的方式是不正确的。我想打开这个文件是为了写和读。该文件已经存在。我遗漏了什么?
发布于 2015-02-09 14:40:39
更改此标志
O_WRONLY | O_RDONLY至
O_RDWR检查这里,它说标志必须包括访问模式的one。
此外,参考文献还提到:
参数标志必须包括下列访问模式之一: O_RDONLY、O_WRONLY或O_RDWR。这些请求分别打开文件只读、只读或读/写。
https://stackoverflow.com/questions/28412246
复制相似问题