linux下c语言编程read()函数的问题

read返回始终是-1。。。求解是为什么... read返回始终是-1。。。求解是为什么 展开
 我来答
cooke1234
2013-04-08 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3576万
展开全部
返回-1的时候,要根据错误码来判断原因,请看下面的函数说明:

表头文件 #include<unistd.h>
定义函数 ssize_t read(int fd,void * buf ,size_t count);
函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。
附加说明 如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EBADF 参数fd 非有效的文件描述词,或该文件已关闭。
旷飞白002
2013-04-08 · TA获得超过613个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:249万
展开全部
On error, -1 is returned, and errno is set appropriately.

读出错了
http://linux.die.net/man/2/read
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaplee
2013-04-09 · TA获得超过748个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:394万
展开全部
调用perror看原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghosthn2007
2013-04-08 · TA获得超过117个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:106万
展开全部
源码贴出来。也好看看嘛,不然别人都没办法知道你什么出错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FanyongYin
2013-04-07 · TA获得超过1054个赞
知道小有建树答主
回答量:1298
采纳率:100%
帮助的人:1006万
展开全部
man read, 看看文档怎么说阿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式