主题 : 读取文件 使用read函数时 错误提示为 “Bad file descriptor” 什么意思呢? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 84761
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2012-12-26
最后登录: 2013-05-16
楼主  发表于: 2012-12-26 16:02

 读取文件 使用read函数时 错误提示为 “Bad file descriptor” 什么意思呢?

用 read_len = read(fd, buffer, sizeof(buffer));

得到 read_len等于 -1
用perror 打印错误提示 显示 “Bad file descriptor”

我打开的文件之前已经使用open函数打开 得到了fd

请问 该错误提示是什么意思
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-12-26 16:47
从“man 2 read”的输出看,

EBADF  fd is not a valid file descriptor or is not open for reading.
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 84761
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2012-12-26
最后登录: 2013-05-16
2楼  发表于: 2012-12-27 14:43

 回 1楼(kasim) 的帖子

多谢
需要打开的文件 是我自己创建的.C文件
打开使用的是open函数 得到了fd
随即使用read 准备读出其中内容,被告知返回值为-1

从错误提示看什么叫 “is not open for reading”?
不理解啊
级别: 骑士
UID: 29604
精华: 9
发帖: 171
金钱: 1830 两
威望: 366 点
综合积分: 522 分
注册时间: 2010-10-01
最后登录: 2016-04-13
3楼  发表于: 2012-12-27 15:29
fd为负数的话,就是open失败,read当然也就出错。
看看是不是open的文件名大小写或权限问题造成。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2012-12-27 17:48

 回 3楼(benjaminwan) 的帖子

从错误提示看什么叫 “is not open for reading”?

调用open()的时候,第二个flags参数里没有包含O_RDONLY或O_RDWR
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 84761
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2012-12-26
最后登录: 2013-05-16
5楼  发表于: 2012-12-28 21:06

 回 3楼(benjaminwan) 的帖子

open 调用结束后 fd=7
然后 直接传给read 结果得到返回值-1。。。
权限是R/W 后面用户权限没设 open我只用了两个参数 应该没问题吧。。