linux如何拿到文件的返回值,linux 下read函数返回值分析

原文出处:http://blog.chinaunix.net/space.php?uid=20558494&do=blog&id=2803003

read函数是Linux下不带缓存的文件I/O操作函数之一,所谓的不带缓存是指一个函数只调用系统中的一个函数。另外还有open、write、lseek、close,它们虽然不是ANSI

C的组成部分,但是POSIX的组成部分。

在对read的使用过程中,发现对其返回值的处理比较重要,这里做一下总结。

read函数原型:

ssize_t read(int fd,void *buf,size_t count)

函数返回值分为下面几种情况:

1、如果读取成功,则返回实际读到的字节数。这里又有两种情况:一是如果在读完count要求字节之前已经到达文件的末尾,那么实际返回的字节数将

小于count值,但是仍然大于0;二是在读完count要求字节之前,仍然没有到达文件的末尾,这是实际返回的字节数等于要求的count值。

2、如果读取时已经到达文件的末尾,则返回0。

3、如果出错,则返回-1。

这样也就是说分为>0 <0

=0三种情况进行讨论。在有的时候,<0

=0可以合为一种情况进行处理。这要根据程序的需要进行处理。

实例分析:

-------------------------------

#include

#include

#include

#include

#include

#include

#include

#define MAXSIZE 35

int main(void)

{

int i,j,fd,size,len;

char *buf="Hello!I`m writing to this file!";

char buf_r[MAXSIZE];

len=strlen(buf);

//open

if((fd=open("/tmp/hello.c",O_CREAT | O_TRUNC |

O_RDWR,0666))<0) {

perror("open:");</

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值